python - Keras LSTM 对于单输入有不同的输出

标签 python keras lstm

我在使用 Keras LSTM 模型时遇到了一个奇怪的问题。我构建了一个单层 LSTM 并尝试使用它。我发现模型的输出在一个输入和多个输入之间是不同的,如以下代码所示。

def lstmTest(training, latent_dim=10):
        _, time_dim, input_dim = training.shape

        # Define an input sequence and process it.
        encoder_inputs = Input(shape=(time_dim, input_dim), name='input')
        encoder = LSTM(latent_dim, return_state=False, name='lstm')
        encoder_outputs = encoder(encoder_inputs)

        model = Model(encoder_inputs, encoder_outputs)

        return model

def trainingTest(model, training, nb_epoch=10, batch_size=300):
        model.compile(optimizer='adam', loss='mse', metrics=['acc'])
        history = model.fit(training, training[:, -1, :10],
                            epochs=nb_epoch,
                            batch_size=batch_size,
                            shuffle=True,
                            verbose=1,
                            ).history
        return history

myVector = [[[i]*20]*8 for i in range(100)]
myVector = np.array(myVector)

lstmTest = lstmTest(myVector)
history = trainingTest(lstmTest, myVector)

vector = myVector[:2]
res1 = lstmTest.predict(vector)

vector = myVector[:1]
res2 = lstmTest.predict(vector)

res2[0] - res1[0]

我得到了以下结果

array([0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 5.8207661e-11,
       0.0000000e+00, 2.3283064e-10, 0.0000000e+00, 0.0000000e+00,
       0.0000000e+00, 0.0000000e+00], dtype=float32)

但是如果我将 res2 更改为与 res1 相同,我会得到预期的结果

array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)

以前有人遇到过这个问题吗?

最佳答案

没有区别,只是 IEEE double 值的限制:

print(0.003f - 0.001f - 0.002f)
-2.3283064E-10

如果您使用的是 GPU,您可以查看 this

关于python - Keras LSTM 对于单输入有不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51833821/

相关文章:

performance - LSTM评估指标MAE解释

python - Julia 或 Python 中的数据采集包/工具箱

python - ezPyCrypto 加密 MS Excel 文件

python - 塑造 LSTM 的数据,并将密集层的输出馈送到 LSTM

tensorflow - 多类 sparse_categorical_crossentropy TruePositives metric 不兼容的形状 : [2, 128] vs. [2,64]

python - 如何表示 PyTorch LSTM 3D 张量?

python - PIL 图像从 I 模式转换为 P 模式

python - 基于两列值从 pandas 数据框中有效提取信息

tensorflow ,计算来自两个模型(编码器、解码器)的权重的梯度

python - keras 模型中损失的 nan 值