python-3.x - 如何在 Tensorboard 中显示 10 多张图片?
问题描述
我注意到我将多少图像保存到 tensorboard 日志文件中并不重要,tensorboard 只会显示其中的 10 个(每个标签)。
我们如何增加图像的数量或至少选择显示哪些图像?
要重现我的意思,请按照 MCVE 运行:
import torch
from torch.utils.tensorboard import SummaryWriter
tb = SummaryWriter(comment="test")
for k in range(100):
# create an image with some funny pattern
b = [n for (n, c) in enumerate(bin(k)) if c == '1']
img = torch.zeros((1,10,10))
img[0, b, :] = 0.5
img =img + img.permute([0, 2, 1])
# add the image to the tensorboard file
tb.add_image(tag="test", img_tensor=img, global_step=k)
这将创建一个runs
保存数据的文件夹。从同一个文件夹执行tensorboard --logdir runs
,打开浏览器并转到localhost:6006
(或替换6006
为启动后碰巧显示的任何端口 tensorboard)。然后转到名为“图像”的选项卡并将滑块移动到灰度图像上方。
就我而言,它仅显示步骤中的图像
k = 3, 20, 24, 32, 37, 49, 52, 53, 67, 78
这甚至不是一个很好的均匀间距,但看起来很随机。我宁愿有
- 查看我保存的不止 10 张图像,并且
- 显示的每个图像之间的步数间距更均匀。
我怎样才能做到这一点?
编辑:我刚刚找到该选项--samples_per_plugin
并尝试了tensorboard --logdir runs --samples_per_plugin "images=100"
. 这确实增加了图像的数量,但它只显示了来自 step 的图像k = 0,1,2,3....,78
,而没有显示来自 above的图像78
。
解决方案
您可能需要等待更长的时间才能等待加载所有数据,但这确实是正确的解决方案,请参阅--help
:
--samples_per_plugin:一个可选的以逗号分隔的 plugin_name=num_samples 对列表,用于明确指定为该插件的每个标签保留多少样本。对于未指定的插件,TensorBoard 将记录的摘要随机下采样到合理的值,以防止长时间运行的作业出现内存不足错误。该标志允许对下采样进行精细控制。请注意,0 表示保留该类型的所有样本。例如,“scalars=500,images=0”保留 500 个标量和所有图像。大多数用户不需要设置此标志。(默认: '')
关于随机样本:这也是正确的,它有某种随机性,来自常见问题解答:
我的数据是否被下采样?我真的看到了所有的数据吗?
TensorBoard 使用水库采样来对数据进行下采样,以便将其加载到 RAM 中。您可以在 tensorboard/backend/application.py 中修改每个标签保留的元素数量。
推荐阅读
- r - 使用循环创建时间序列并用值填充它们
- c# - 无法使用 Autofac 解析注册类型的键控泛型参数
- postgresql - 选择名称的行为不一致
- c++ - MSVS:三元运算符中的整数常量溢出警告
- laravel - 获取所有任务标签都在路径标签中的任务
- bash - bash 脚本卡在 for 循环的末尾
- java - 尝试从 UI 中添加 SQL 语句时,Struts2 应用程序错误输出为未定义操作
- postgresql - 如何选择某些列具有超过 1 个不同值的行?
- r - ggplot2中组之间的图表差异
- javascript - 删除特定的数组元素,而不仅仅是最后一个 .pop - Redux-form