将LSTM模型从Pytorch转换为Tensorflow

时间:2019-12-19 15:25:58

标签: python tensorflow keras pytorch lstm

我在Pytorch中已有一个模型,我正在尝试将其转换为TensorFlow。这是一个神经网络,具有两个隐藏的LSTM层和多个输出,因为我的目标是进行多类分类。我的输入是一个时间序列,其中每个值代表一个给定的类,我想预测下一个。我的时间序列已通过使用大小为10的窗口转换为向量。 困扰我的是,在pytorch中,我的模型给出了很棒的预测,但是在tensorflow中,我的准确性下降了,我的损失函数也卡住了。

我很确定我输入到模型中的数据是所需的形状,所以我现在只发布模型本身。

火炬代码

class Model(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_keys):
        super(Model, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = nn.Linear(hidden_size, num_keys)

    def forward(self, input):
        h0 = torch.zeros(self.num_layers, input.size(0), self.hidden_size).to(device)
        c0 = torch.zeros(self.num_layers, input.size(0), self.hidden_size).to(device)
        out, _ = self.lstm(input, (h0, c0))
        out = self.fc(out[:, -1, :])
        return out

TF代码

modeltf = keras.models.Sequential([
  keras.layers.LSTM(hidden_size, return_sequences=True,
                         batch_input_shape=(batch_size, 10, 1)),
  keras.layers.LSTM(hidden_size, return_sequences=False),
  keras.layers.Dense(num_classes),
])

modeltf.compile(optimizer=keras.optimizers.Adam(),
              loss='sparse_categorical_crossentropy',
              metrics=['sparse_categorical_accuracy'])

如果有人能看到差异或有任何建议,我将不胜感激:)

0 个答案:

没有答案