Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么tf.keras.dataset中的数据序列洗牌会对tf.fit和tf.predict之间的序列顺序产生不同的影响?_Python_Tensorflow_Keras_Deep Learning_Shuffle - Fatal编程技术网

Python 为什么tf.keras.dataset中的数据序列洗牌会对tf.fit和tf.predict之间的序列顺序产生不同的影响?

Python 为什么tf.keras.dataset中的数据序列洗牌会对tf.fit和tf.predict之间的序列顺序产生不同的影响?,python,tensorflow,keras,deep-learning,shuffle,Python,Tensorflow,Keras,Deep Learning,Shuffle,我正在培训一个带有时间序列和标签的LSTM深度学习模型 我生成一个tensorflow数据集“训练数据”和“测试数据” 然后,我用上述数据集训练模型 model.fit(train_data, epochs=epochs, validation_data = test_data, callbacks=callbacks) 然后运行预测以获得预测值 train_labels = np.concatenate([y for x, y in train_data], axis=0) train_pr

我正在培训一个带有时间序列和标签的LSTM深度学习模型

我生成一个tensorflow数据集“训练数据”和“测试数据”

然后,我用上述数据集训练模型

model.fit(train_data, epochs=epochs, validation_data = test_data, callbacks=callbacks)
然后运行预测以获得预测值

train_labels = np.concatenate([y for x, y in train_data], axis=0)
train_predictions = model.predict(train_data)
test_labels = np.concatenate([y for x, y in test_data], axis=0)
test_predictions = model.predict(test_data)
这里是我的问题:当我根据预测值绘制列车/测试标签数据时,当我在数据集构建步骤中对序列进行洗牌时,我得到以下曲线图:

这里是带有洗牌的输出


问题为什么会这样?我使用完全相同的源数据集进行训练和预测。数据集应该被洗牌。TensorFlow是否有可能随机对数据进行两次洗牌,一次在训练期间,另一次用于预测?我试图提供一个无序种子,但这也没有改变任何事情。

每次迭代数据集时,数据集都会被无序化。理解列表后得到的结果与编写
predict
时的顺序不同。如果您不想这样做,请通过:

shuffle(buffer_size=BUFFER_SIZE, reshuffle_each_iteration=False)

非常好,谢谢,这很好地解释了这一点,并提供了一个解决方案。但我想你是想把这个标志设为false,以防止每次迭代都重新洗牌……是的,的确如此。为我的困惑道歉。
shuffle(buffer_size=BUFFER_SIZE, reshuffle_each_iteration=False)