原文: 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用法示例的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did126306