tensorflow - Pytorch 相当于 TensorFlow
问题描述
我正在尝试在 Pytorch 中跟进此代码。我已经尝试了好几天,但是阅读张量流文档然后 PyTorch 文档让我完全困惑。
input_data = Input(shape=(256, 64, 1), name=‘input’)
inner = Conv2D(32, (3, 3), padding=‘same’, name=‘conv1’, kernel_initializer=‘he_normal’)(input_data)
inner = BatchNormalization()(inner)
inner = Activation(‘relu’)(inner)
inner = MaxPooling2D(pool_size=(2, 2), name=‘max1’)(inner)
inner = Conv2D(64, (3, 3), padding=‘same’, name=‘conv2’, kernel_initializer=‘he_normal’)(inner)
inner = BatchNormalization()(inner)
inner = Activation(‘relu’)(inner)
inner = MaxPooling2D(pool_size=(2, 2), name=‘max2’)(inner)
inner = Dropout(0.3)(inner)
inner = Conv2D(128, (3, 3), padding=‘same’, name=‘conv3’, kernel_initializer=‘he_normal’)(inner)
inner = BatchNormalization()(inner)
inner = Activation(‘relu’)(inner)
inner = MaxPooling2D(pool_size=(1, 2), name=‘max3’)(inner)
inner = Dropout(0.3)(inner)
CNN to RNN
inner = Reshape(target_shape=((64, 1024)), name=‘reshape’)(inner)
inner = Dense(64, activation=‘relu’, kernel_initializer=‘he_normal’, name=‘dense1’)(inner)
RNN
inner = Bidirectional(LSTM(256, return_sequences=True), name = ‘lstm1’)(inner)
inner = Bidirectional(LSTM(256, return_sequences=True), name = ‘lstm2’)(inner)
OUTPUT
inner = Dense(num_of_characters, kernel_initializer=‘he_normal’,name=‘dense2’)(inner)
y_pred = Activation(‘softmax’, name=‘softmax’)(inner)
model = Model(inputs=input_data, outputs=y_pred)
我试着在 Pytorch 中一点一点地跟进它
class Net(nn.Module):
def init(self):
super(Net,self).init()
self.input_data = input_size
self.conv1 = nn.Conv2d(32,3,3)
self.conv2 = nn.Conv2d(64,3,3)
self.conv3 = nn.Conv2d(128,3,3)
self.dropout = nn.Dropout(0.3)
self.maxp = torch.nn.MaxPool2d((2,2))
#CNN to RNN
self.linear1 = nn.Linear(256*62*62,64)
#RNN
self.lstm = torch.nn.LSTM(256, 10,bidirectional = True)
#output
self.linear2 = nn.Linear(64,num_of_chars)
def forward(self,x,input_size):
x = self.conv1(input_size)
x = nn.BatchNorm2d(x)
x = F.relu(x)
x = self.maxp(x)
x = self.conv2(x)
x = nn.BatchNorm2d(x)
x = F.relu(x)
x = self.maxp(x)
x = self.dropout(x)
x = self.conv3(x)
x = nn.BatchNorm2d(x)
x = F.relu(x)
x = self.maxp(x)
x = self.dropout(x)
x = x.view((64,1024))
x = self.linear1(x)
x = self.lstm(x)
x = self.lstm(x)
x = self.linear2(x)
x = nn.Softmax(x,dim=1)
return x
但是模型总结完全不一样。我对参数感到非常困惑。任何帮助,将不胜感激。告诉我你是否需要什么。谢谢
解决方案
推荐阅读
- excel - Excel 64 位返回“找不到文件:UKRM_EncodeEIB_D.dll.dll”
- c - 如何在 C 中编写代码来检查字符串中的重复单词并计算它们的出现次数?
- javascript - 将输入文本连接到滑块
- r - 尝试在 R 中安装快速 qc
- linux - 登录时拒绝 Docker 权限以及我尝试的一切
- html - 在没有滚动条的情况下以 100% 高度在 flexbox 中显示图像
- typescript - 一个介于 0 和 1 之间的数字作为 typescript 中的类型
- python - 如何在 Android 应用程序中嵌入 Python 解释器
- javascript - 顺序等待或等待 Promise.all
- python - 我如何始终检查 tkinter python 组合框中的新输入?