我正在使用tensorflow 2.0在tf.keras中训练一个模型。 我遇到一个问题,我的模型似乎可以成功训练,但是它没有遍历整个数据集。我将代码重组为tensorflow 1.15,在tensorflow 1.x中没有这个问题。我正在关注this tutorial,以了解多个输入系列。以下是更多详细信息:
我有一个时间序列数据集。它很小,因此我可以将其加载到内存中,因此不需要数据集API。我正在查看时间序列以产生两个数组X和Y,例如
X=[
[[1,2,3],[4,5,6],[7,8,9]],[[4,9],[10,11,12]],[[7,12],[13,14,15]],...
]
Y = [
[4],[7],[10],...
]
(是的,我意识到我可以很容易地只包含其中一个功能并制作X=[[[1,3]],6]],...]
,但是我将包含许多功能,这些功能在管道正常工作时并不能完美地同步。此外,即使仅包含第一个功能,我仍然看到我描述的问题。)
然后,我建立我的模型:
model = Sequential()
model.add(LSTM(50,activation='relu',input_shape=(n_steps,n_features)))
model.add(Dense(1))
model.compile(optimizer='adam',loss='mse')
然后我训练它:
model.fit([X],[Y],num_epochs=300,validation_split=0.2)
它会正确报告训练和验证样本的数量,然后会弹出进度栏...但这就是成功的地方。对于每个时期,val_loss和val_mean_squared_error始终为0,并且似乎永远不会训练我的数据集中窗口的一小部分(〜1/1000)以上。这是打印输出:
Epoch X/300 192/162636 [..............................] - eta: 45:42 - loss: 0.4783 - mean_squared_error: 0.4783 - val_loss: 0.0000e+00 - val_mean_squared_error: 0.0000e+00
当我在tf 1.15中执行相同的代码时,它会按我的预期执行-历时大约需要45分钟(在tf 2.0中,它们需要
没有报告任何错误,警告或信息,它只是停止了对我的数据集的早期迭代。 有人对tensorflow 2.0中tf.keras.Model.fit的变化有任何见解吗?还是我走的道路上有任何错误?任何见识都将不胜感激。谢谢!
编辑11/25:
我已针对此错误here提交了GitHub问题。请查看该帖子以获取进度更新,并且在问题解决后,我会尽力记住要更新此帖子。