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 从回调打印会中断按模型、拟合和数据值打印的数据_Python_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python 从回调打印会中断按模型、拟合和数据值打印的数据

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')中捕获的列车精度,则返回结果末尾的回调中 它与价值模型不同。拟合打印出来。它就像模型一样 精度值不是来自历元的最后一批,而是从下一批到

我正在用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。 有人知道这是为什么或者如何解决吗?数据如下所示

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,则不会收到警告,并且打印的精度数据是正确的。问题已解决

请提供评论,使我能够改进问题,而不是将问题降级,我认为对于那些有经验的人来说,问题是清楚的,有足够的信息。如果没有,请澄清不足之处。非常感谢。