好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PyTorch的TensorBoard用法示例

原文: https://HdhCmsTestemperinter.info/2020/07/30/tensorboard-in-pytorch/

缘由

自己上次安装好PyTorch以及训练了一下官方的数据,今天看到了这个TensorBoard来可视化的用法,感觉不错就尝试玩了一下!自己只是尝试了一下追踪模型训练的过程,其他自己去看官网教程吧!

用法

具体详细说明请参考https://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html

简单说就是:

设置TensorBoard。

写入TensorBoard。

运行

打开http://localhost:6006/

例子

我把训练的图片分类的loss用tensorboard给可视化出来了:

步骤

设置TensorBoard。

简单说是设置基本tensorboard运行需要的东西,我这代码中的imshow(img)和matplotlib_imshow(img, one_channel=False)都是显示图片的函数,可以统一替换,我自己测试就没改了!

#?helper?function?to?show?an?image#?(used?in?the?`plot_classes_preds`?function?below)def?matplotlib_imshow(img,?one_channel=False):
????if?one_channel:
????????img?=?img.mean(dim=0)
????img?=?img?/?2?+?0.5?????#?unnormalize
????npimg?=?img.cpu().numpy()
????if?one_channel:
????????plt.imshow(npimg,?cmap="Greys")
????else:
????????plt.imshow(np.transpose(npimg,?(1,?2,?0)))????#?设置tensorBoard#?default?`log_dir`?is?"runs"?-?we'll?be?more?specific?herewriter?=?SummaryWriter('runs/image_classify_tensorboard')#?get?some?random?training?imagesdataiter?=?iter(trainloader)images,?labels?=?dataiter.next()#?create?grid?of?imagesimg_grid?=?torchvision.utils.make_grid(images)#?show?images#?matplotlib_imshow(img_grid,?one_channel=True)imshow(img_grid)#?write?to?tensorboardwriter.add_image('imag_classify',?img_grid)#?Tracking?model?training?with?TensorBoard#?helper?functionsdef?images_to_probs(net,?images):
????'''
????Generates?predictions?and?corresponding?probabilities?from?a?trained
????network?and?a?list?of?images
????'''
????output?=?net(images)
????#?convert?output?probabilities?to?predicted?class
????_,?preds_tensor?=?torch.max(output,?1)
????#?preds?=?np.squeeze(preds_tensor.numpy())
????preds?=?np.squeeze(preds_tensor.cpu().numpy())
????return?preds,?[F.softmax(el,?dim=0)[i].item()?for?i,?el?in?zip(preds,?output)]def?plot_classes_preds(net,?images,?labels):
????'''
????Generates?matplotlib?Figure?using?a?trained?network,?along?with?images
????and?labels?from?a?batch,?that?shows?the?network's?top?prediction?along
????with?its?probability,?alongside?the?actual?label,?coloring?this
????information?based?on?whether?the?prediction?was?correct?or?not.
????Uses?the?"images_to_probs"?function.
????'''
????preds,?probs?=?images_to_probs(net,?images)
????#?plot?the?images?in?the?batch,?along?with?predicted?and?true?labels
????fig?=?plt.figure(figsize=(12,?48))
????for?idx?in?np.arange(4):
????????ax?=?fig.add_subplot(1,?4,?idx+1,?xticks=[],?yticks=[])
????????matplotlib_imshow(images[idx],?one_channel=True)
????????ax.set_title("{0},?{1:.1f}%\n(label:?{2})".format(
????????????classes[preds[idx]],
????????????probs[idx]?*?100.0,
????????????classes[labels[idx]]),
????????????????????color=("green"?if?preds[idx]==labels[idx].item()?else?"red"))
????return?fig

写入TensorBoard。

这个在训练的每一阶段写入tensorboard

????????if?i?%?2000?==?1999:????#?print?every?2000?mini-batches
????????????print('[%d,?%5d]?loss:?%.3f'?%
??????????????????(epoch?+?1,?i?+?1,?running_loss?/?2000))

????????????#?把数据写入tensorflow
????????????#?...log?the?running?loss
????????????writer.add_scalar('image?training?loss',
????????????????????????????running_loss?/?2000,
????????????????????????????epoch?*?len(trainloader)?+?i)

????????????#?...log?a?Matplotlib?Figure?showing?the?model's?predictions?on?a
????????????#?random?mini-batch
????????????writer.add_figure('predictions?vs.?actuals',
????????????????????????????plot_classes_preds(net,?inputs,?labels),
????????????????????????????global_step=epoch?*?len(trainloader)?+?i)

运行
tensorboard?--logdir=runs

打开http://localhost:6006/ 即可查看

完整版代码参考

如需了解完整代码请访问:https://HdhCmsTestemperinter.info/2020/07/30/tensorboard-in-pytorch/

import?torchimport?torchvisionimport?torchvision.transforms?as?transformsimport?matplotlib.pyplot?as?pltimport?numpy?as?npimport?torch.nn?as?nnimport?torch.nn.functional?as?Fimport?torch.optim?as?optimfrom?datetime?import?datetimefrom?torch.utils.tensorboard?import?SummaryWriter..........................................

查看更多关于PyTorch的TensorBoard用法示例的详细内容...

  阅读:35次