Python 从回调打印会中断按模型、拟合和数据值打印的数据
我正在用tensorflow训练一个模型。我有一个自定义的回调,它在epoch\U端打印 拿出一些数据。特别是培训准确性或验证损失。使用verbose=1 在模型中,fit tensorflow将训练损失、训练精度、val_损失和val_精度打印为 如下所示。显然,is也在使用TQM打印进度条。问题是,如果我打印出从acc=logs.get('accurity')中捕获的列车精度,则返回结果末尾的回调中 它与价值模型不同。拟合打印出来。它就像模型一样 精度值不是来自历元的最后一批,而是从下一批到最后一批。您还可以看到,回调中的打印输出会中断model.fit打印输出。注:对于历元1,我的精度为0.9172,而model.fit值为0.8805或0.8808。 有人知道这是为什么或者如何解决吗?数据如下所示Python 从回调打印会中断按模型、拟合和数据值打印的数据,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我正在用tensorflow训练一个模型。我有一个自定义的回调,它在epoch\U端打印 拿出一些数据。特别是培训准确性或验证损失。使用verbose=1 在模型中,fit tensorflow将训练损失、训练精度、val_损失和val_精度打印为 如下所示。显然,is也在使用TQM打印进度条。问题是,如果我打印出从acc=logs.get('accurity')中捕获的列车精度,则返回结果末尾的回调中 它与价值模型不同。拟合打印出来。它就像模型一样 精度值不是来自历元的最后一批,而是从下一批到
Epoch 1/30
129/129 [==============================] - ETA: 0s - loss: 3.1791 - accuracy: 0.8805
training accuracy improved from 0.0000 to 0.9172 learning rate held at 0.002000 # callback printed data
129/129 [==============================] - 50s 389ms/step - loss: 3.1723 - accuracy: 0.8808 - val_loss: 3.1509 - val_accuracy: 0.5783
Epoch 2/30
129/129 [==============================] - ETA: 0s - loss: 0.9478 - accuracy: 0.9671
training accuracy improved from 0.9172 to 0.9661 learning rate held at 0.002000 # calback printed data
129/129 [==============================] - 43s 333ms/step - loss: 0.9466 - accuracy: 0.9671 - val_loss: 0.9385 - val_accuracy: 0.8000
Epoch 3/30
129/129 [==============================] - ETA: 0s - loss: 0.4501 - accuracy: 0.9787
好吧,说来话长,但我使用的是tensorflow 2.1。我抑制了恼人的tensorflow警告,所以我没有看到任何警告。出于怀疑,我启用了警告,并得到下面的警告
WARNING:tensorflow:Callbacks method `on_train_batch_end` is slow compared to the batch
time (batch time: 0.0350s vs `on_train_batch_end` time: 0.0910s). Check your callbacks.
经过多次搜索,我发现如果运行model.fit with verbose=1,则会显示警告。显然,这是tensorflow版本中的一个错误,导致model.fit打印的精度数据不正确。如果运行model.fit with verbose=2,则不会收到警告,并且打印的精度数据是正确的。问题已解决请提供评论,使我能够改进问题,而不是将问题降级,我认为对于那些有经验的人来说,问题是清楚的,有足够的信息。如果没有,请澄清不足之处。非常感谢。