如何将CNN LSTM表格keras转换为pytorch

如何将CNN LSTM表格keras转换为pytorch,keras,pytorch,conv-neural-network,lstm,Keras,Pytorch,Conv Neural Network,Lstm,我正试图将keras的CNN LSTM转换为pytorch,但我遇到了麻烦 ConvNN_model = models.Sequential() ConvNN_model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 1))) ConvNN_model.add(layers.MaxPooling2D((2, 2))) ConvNN_model.add(layers.Conv2D(64, (3, 3),

我正试图将keras的CNN LSTM转换为pytorch,但我遇到了麻烦

ConvNN_model = models.Sequential()
ConvNN_model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 1)))
ConvNN_model.add(layers.MaxPooling2D((2, 2)))
ConvNN_model.add(layers.Conv2D(64, (3, 3), activation='relu'))
ConvNN_model.add(TimeDistributed(LSTM(128, activation='relu')))
ConvNN_model.add(Dropout(0.2))
ConvNN_model.add(LSTM(128, activation='relu'))
ConvNN_model.add(layers.Dense(64, activation='relu'))
ConvNN_model.add(layers.Dropout(0.25))
ConvNN_model.add(layers.Dense(15, activation='softmax'))

如何将上述代码从Keras转换为Pytorch?

这是Keras中的CNN:

ConvNN\u model=models.Sequential()
ConvNN_model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(64,64,1)))
ConvNN_model.add(layers.MaxPooling2D((2,2)))
ConvNN_model.add(layers.Conv2D(64,(3,3),activation='relu'))
ConvNN_model.add(时间分布(LSTM(128,activation='relu'))
ConvNN_模型添加(退出(0.2))
ConvNN_model.add(LSTM(128,activation='relu'))
ConvNN_model.add(layers.Dense(64,activation='relu'))
ConvNN_模型添加(层。退出(0.25))
ConvNN_model.add(layers.Dense(15,activation='softmax'))
这是PyTorch中的等效代码:

class-ConvNN\u模型(nn.Module):
定义初始化(自):
super(ConvNN_模型,self)。_init_()
self.layers=nn.Sequential(
nn.Conv2d(1,32,内核大小=3),
nn.ReLU(),
nn.MaxPool2d((2,2)),
nn.Conv2d(32,64,内核大小=3),
nn.ReLU(),
时间分布(nn.LSTM(128128)),
nn.辍学率(0.2),
nn.LSTM(128128),
nn.ReLU(),
nn.线性(128,64),
nn.ReLU(),
nn.辍学率(0.25),
nn.线性(64,15),
nn.Softmax()
)
def前进(自身,x):
返回self.layers(x)
请记住,PyTorch中的
TimeDistributed
类没有等效的模块,因此您必须自己构建它。下面是一个您可以使用的(来自):

类时间分布(nn.Module):
def_uuuinit_uuu(self、module、batch_first=False):
超级(时间分布,自)。\uuuuu init\uuuuuu()
self.module=模块
self.batch\u first=batch\u first
def前进(自身,x):

如果len(x.size())有什么问题?你试过什么?我试过写一个
类ConvNetLSTM(nn.Module):
在类内有一个
\uuu init\uuu
和一个
foward
,但是我对pytorch没有太多过期性,我不确定我是否在
\uu init\uu>中写了正确的网络