Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 Tensorboard未显示上次训练模型的自定义度量_Python_Python 3.x_Tensorflow_Tensorboard - Fatal编程技术网

Python Tensorboard未显示上次训练模型的自定义度量

Python Tensorboard未显示上次训练模型的自定义度量,python,python-3.x,tensorflow,tensorboard,Python,Python 3.x,Tensorflow,Tensorboard,我正在培训一系列关于python tensorflow的模型,并在Tensorboard上显示结果。这最初是在jupyter笔记本上完成的,但显然在Colab上也存在问题 除了验证结果之外,我还想在Tensorboard上显示测试集上的评估结果,为此,我通过重写on_train_end方法创建了一个自定义回调,该方法调用res=self.model.evalute(x=x_测试,y=y_测试,batch_size=1)然后tf.summary.scalar将计算结果存储为scalar。在结束所有

我正在培训一系列关于python tensorflow的模型,并在Tensorboard上显示结果。这最初是在jupyter笔记本上完成的,但显然在Colab上也存在问题

除了验证结果之外,我还想在Tensorboard上显示测试集上的评估结果,为此,我通过重写on_train_end方法创建了一个自定义回调,该方法调用
res=self.model.evalute(x=x_测试,y=y_测试,batch_size=1)
然后
tf.summary.scalar
将计算结果存储为scalar。在结束所有的训练后,我启动了tensorboard。问题是tensorboard没有显示最后一个模型的度量:给定
n
模型(其架构在
models\u ARCH
中定义),tensorboard只是显示第一个
n-1
模型的自定义度量值

下面是代码(在jupyter笔记本中,有些行不能直接从python运行,例如
!rm-rf NNlogs/*
以删除以前的日志):

如果我这样做:

for m in models:
    print(m.name, m.evaluate(x=x_test, y=y_test, batch_size=1, verbose=0))
它打印所有模型的评估结果:

Dense2 43.158206939697266
Dense3 44.55398941040039
Dense4 43.6148681640625
Dense5 48.75056457519531
但当我发射张力板时

%load_ext tensorboard
%tensorboard --logdir NNlogs --host localhost
在左菜单上为所有模型选择
度量值
,它不会显示
Dense8
模型中的一个,而会显示其他模型中的一个。从这张图片中可以看出问题,您可以看到左下角的模型度量值已被选择,但上面的图表没有显示t此模型的值(请相信它不会缩放)

此外,我还检查了该型号的文件夹
NNlogs
,我可以看到其他型号的扩展名为
*.v2
,因此我认为该指标是正确安全的


接下来,只有当缓冲区已满时,tf.summary.create\U file\U writer才会写入磁盘。显然,当写入多个模型求值时,缓冲区会被填满。因此,在第四次求值时,它会写入第三次磁盘,而缓冲区包含第四次,但未满,不会写入磁盘。强制要刷新缓冲区并将内容写入磁盘,在
for
循环之后调用
file\u writer.close()
就足够了(在循环之外)。

这可能不是对您的问题的直接回答,但您是否考虑过使用Aim? 它在可视化度量和分析度量方面具有更高的复杂度,但也易于使用/开始使用:

  • pythonic快速搜索超过100秒的实验
  • 按参数对度量进行分组和聚合
  • 无缝切换到平行坐标视图
免责声明:我是一个贡献者。希望这能有所帮助

%load_ext tensorboard
%tensorboard --logdir NNlogs --host localhost