pytorch+tensorboard错误 " AttributeError: 'Tensor' object has no attribute ' items' "

问题描述 投票:0回答:1

下午好!我想在pytorch中使用tensorboard记录火车的损失,我在那里得到了一个错误。

AttributeError: 'Tensor' object has no attribute 'items'

我想解决这个错误,并检查日志使用tensorboard.在这里,我显示我的代码。

l_mse = mseloss(img,decoder_out)
writer.add_scalars("MSE",l_mse,n_iter)

img 是真实的图像在GAN和 decoder_out 是发电机的输出,然后我有错误的打击。

Traceback (most recent call last):
  File "main.py", line 39, in <module>
    main()
  File "main.py", line 22, in main
    solover.train(dataloader)
  File "path to my file", line 239, in train
    writer.add_scalars("MSE",l_mse,n_iter)
  File "/~~/anaconda3/lib/python3.7/site-packages/torch/utils/tensorboard/writer.py", line 378, in add_scalars
    for tag, scalar_value in tag_scalar_dict.items():
AttributeError: 'Tensor' object has no attribute 'items'

我试过

writer.add_scalars("MSE",l_mse,n_iter).eval()
writer.add_scalars("MSE",l_mse.item(),n_iter)
writer.add_scalars("MSE",l_mse.detach().cpu().numpy(),n_iter)

但仍然不能很好地工作。

python tensorflow pytorch tensorboard
1个回答
1
投票

你调用的是 writer.add_scalars 附带 s. 从 Pytorch Tensorboardx 文档中你可以看到,这个函数期待一个 dictionary 作为输入。

 add_scalars(main_tag, tag_scalar_dict, global_step=None, walltime=None)
  • 标签_scalar_dict (dict) - 存储标签和相应数值的键值对。
writer = SummaryWriter()
r = 5
for i in range(100):
    writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r),
                                    'xcosx':i*np.cos(i/r),
                                    'tanx': np.tan(i/r)}, i)
writer.close()

使用 writer.add_scalar 而是

要记录一个标量值,使用 writer.add_scalar('myscalar', value, iteration). 请注意,如果您输入一个 PyTorch 张量,程序会发出抱怨。记住,要通过以下方式提取标量值 x.item() 如果x是一个火炬标量张量。

writer.add_scalar("MSE", l_mse.item(), n_iter)
© www.soinside.com 2019 - 2024. All rights reserved.