把一个简单的CNN从眼角变成火炬 [英] Convert a simple cnn from keras to pytorch

查看:2
本文介绍了把一个简单的CNN从眼角变成火炬的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人能帮我把这个模型转换成PyTorch?我已经尝试过像这样How can I convert this keras cnn model to pytorch version从凯拉斯转换到火炬,但训练结果不同。谢谢。

input_3d = (1, 64, 96, 96)
pool_3d = (2, 2, 2)
model = Sequential()
model.add(Convolution3D(8, 3, 3, 3, name='conv1', input_shape=input_3d,
                          data_format='channels_first'))
model.add(MaxPooling3D(pool_size=pool_3d, name='pool1'))
model.add(Convolution3D(8, 3, 3, 3, name='conv2',data_format='channels_first'))
model.add(MaxPooling3D(pool_size=pool_3d, name='pool2'))
model.add(Convolution3D(8, 3, 3, 3, name='conv3',data_format='channels_first'))
model.add(MaxPooling3D(pool_size=pool_3d, name='pool3'))
model.add(Flatten())
model.add(Dense(2000, activation='relu', name='dense1'))
model.add(Dropout(0.5, name='dropout1'))
model.add(Dense(500, activation='relu', name='dense2'))
model.add(Dropout(0.5, name='dropout2'))
model.add(Dense(3, activation='softmax', name='softmax'))


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1 (Conv3D)               (None, 8, 60, 94, 94)     224       
_________________________________________________________________
pool1 (MaxPooling3D)         (None, 8, 30, 47, 47)     0         
_________________________________________________________________
conv2 (Conv3D)               (None, 8, 28, 45, 45)     1736      
_________________________________________________________________
pool2 (MaxPooling3D)         (None, 8, 14, 22, 22)     0         
_________________________________________________________________
conv3 (Conv3D)               (None, 8, 12, 20, 20)     1736      
_________________________________________________________________
pool3 (MaxPooling3D)         (None, 8, 6, 10, 10)      0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 4800)              0         
_________________________________________________________________
dense1 (Dense)               (None, 2000)              9602000   
_________________________________________________________________
dropout1 (Dropout)           (None, 2000)              0         
_________________________________________________________________
dense2 (Dense)               (None, 500)               1000500   
_________________________________________________________________
dropout2 (Dropout)           (None, 500)               0         
_________________________________________________________________
softmax (Dense)              (None, 3)                 1503      
=================================================================

推荐答案

您可以节省Keras重量,然后在pytorch中重新加载。 具体步骤为
第0步:在KERAS中培训模型。...
步骤1:在PyTorch中重新创建和初始化您的模型体系结构。...
步骤2:导入Kera模型并复制权重。...
步骤3:将这些权重加载到您的PyTorch模型上。...
步骤4:测试并保存您的火炬模型。
您可以参照此处的示例https://gereshes.com/2019/06/24/how-to-transfer-a-simple-keras-model-to-pytorch-the-hard-way/

这篇关于把一个简单的CNN从眼角变成火炬的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆