系统信息
- 是否编写了自定义代码(与在TensorFlow中使用提供的库存示例脚本相反):是
- OS平台和发行版:18.04.1-Ubuntu
- 从哪里安装的TensorFlow(源代码或二进制文件):二进制
- TensorFlow版本(请使用下面的命令):v2.3.0-rc2-23-gb36436b087 2.3.0
- Python版本:3.6.9
- CUDA/cuDNN版本:libcudart.so.10.1
- GPU型号和内存:GeForce RTX 2080 Ti
描述当前行为
如果在使用tf.summary
操作时,tf.keras.callbacks.TensorBoard
回调处于活动状态,则默认的step
始终为0
。
这不会影响已记录指标的步长值,因为tf.keras.Model
不依赖于默认步长,而是直接使用_train_counter
。
原因在于https://github.com/tensorflow/tensorflow/blob/v2.3.1/tensorflow/python/keras/callbacks.py#L2075,其中评估了step
变量的值,即self._train_step
(也称为self.model._train_counter
),但在新的批次开始时不调用它。
描述预期行为
默认步长值,即tf.summary.experimental.get_step()
返回的值,应反映当前步骤。由于self._train_step
是一个变量,只需将其直接传递给tf.summary.experimental.set_step()
即可。
重现问题的独立代码
在训练过程中使用tf.summary.scalar
记录任意标量,但不要提供step参数。确保创建了一个tf.keras.callbacks.TensorBoard
并设置了update_freq
参数。
6条答案
按热度按时间kq4fsx7k1#
我编写了一个快速的热修复,它对我有效:
7d7tgy0s2#
你看到这样的公关有什么副作用吗?
34gzjxbg3#
如果你正在修改代码,你可能也想考虑更新文档。目前还没有记录
TensorBoard
回调设置默认写入器。我最初在尝试从TensorBoard回调中劫持写入器时遇到了这个问题,意识到这个类已经实现了我想要的功能。x6yk4ghg4#
请使用最新版本的TensorFlow进行验证,并告知我们是否仍然遇到此问题。
oknwwptz5#
这个问题在TensorFlow 2.5.0中仍然存在。当我使用
tf.summary.*
操作来记录我想要的标量和图像时,它们的步骤总是在TensorBoard中的0。而@sehoffmann提到的 Package 类TensorBoardFix
在TF 2.5.0中作为临时解决方案工作。g6ll5ycj6#
请使用最新版本的TensorFlow进行验证,并告知我们是否仍然遇到此问题。
这个问题在TensorFlow 2.6.0中仍然存在。我可以将包含修复程序的PR推送到
keras
以解决它吗?