首页 > 解决方案 > jupyter notebook和google colaboratory之间的LSTM性能差异

问题描述

首先,对不起我的英语不好。这不是我的第一语言。

我是 python 新手,我一直在用 jupyter notebook 练习我的时间序列预测 keras LSTM 问题。我的代码与示例代码完全相同,但我发现我在训练期间的验证损失比示例大得多。(示例:0.01~0.03,我的:0.6~0.4)绘图结果也表明该模型无法正确预测。

当我尝试在 google colaboratory 上运行相同的代码时,模型运行良好,验证损失与示例相当,预测性能也与示例相当。

我想知道我的 jupyter 笔记本有什么问题。它与 tensorflow/python 版本有关吗?也许是m1芯片?如果不是,我想知道是什么让模型在本地环境中的性能如此糟糕。(M1 macbook air,Tensorflow 版本:2.5.0,Python 版本:3.8.10)

下面是我的代码,只是一个简单的 keras LSTM 模型。

BATCH_SIZE = 256
BUFFER_SIZE = 10000

train_univariate = tf.data.Dataset.from_tensor_slices((x_train_uni, y_train_uni))
train_univariate = train_univariate.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()

val_univariate = tf.data.Dataset.from_tensor_slices((x_val_uni, y_val_uni))
val_univariate = val_univariate.batch(BATCH_SIZE).repeat()

simple_lstm_model = tf.keras.models.Sequential([
    tf.keras.layers.LSTM(8, input_shape = x_train_uni.shape[-2:]),
    tf.keras.layers.Dense(1)
    ])

simple_lstm_model.compile(optimizer = 'adam', loss = 'mae')

EVALUATION_INTERVAL = 200
EPOCHS = 10
simple_lstm_model.fit(train_univariate, epochs = EPOCHS, steps_per_epoch = EVALUATION_INTERVAL, 
                     validation_data = val_univariate, validation_steps = 50)

谢谢。

标签: pythontensorflowkerasjupyter-notebooklstm

解决方案


推荐阅读