文章预览:

  • 1.可视化train,test的loss acc
    • 1.1 案例:交通指示牌识别案例-history数组
    • 1.2 一张图两条曲线loss 写法总结
      • step1 定义数组
      • step2 添加数据
      • step3 画图
      • 效果
  • 2.可视化测试结果
  • 3 loss曲线生成及保存
  • 4GAN -真实图片与生成图片
    • (1)真实图片与生成图片对比
    • (2)生成图片的gif

1.可视化train,test的loss acc

1.1 案例:交通指示牌识别案例-history数组

代码地址:E:\项目例程\猫狗分类\迁移学习\猫狗_resnet18_2 \猫狗分类_迁移学习可视化

  1. 导入库
 from collections import defaultdict
  1. 训练函数中构建一个默认value为list的字典
history = defaultdict(list)  # 构建一个默认value为list的字典
  1. 训练函数中保存train_loss,train_acc,test_loss,test_acc结果
history['train_acc'].append(train_accuracy)history['train_loss'].append(train_loss)history['val_acc'].append(val_accuracy)history['val_loss'].append(val_loss)
  1. 训练函数返回
return model, history
  1. 训练模型调用时
# 调用训练函数训练
model_conv, history = train_model(model_conv,criterion,optimizer_conv,exp_lr_scheduler,num_epochs=30
)
  1. 绘制函数 两张图,每个图两个曲线,写法固定
    注意:若运行不出图,则加plt.show()
# 绘制 loss, acc  写法固定:两张表
def plot_training_history(history):fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(18, 6))ax1.plot(history['train_loss'], label='train loss')ax1.plot(history['val_loss'], label='val loss')ax1.set_ylim([-0.05, 1.05])ax1.legend()ax1.set_ylabel('Loss')ax1.set_xlabel('Epoch')ax2.plot(history['train_acc'], label='train acc')ax2.plot(history['val_acc'], label='val acc')ax2.set_ylim([-0.05, 1.05])ax2.legend()ax2.set_ylabel('Accuracy')ax2.set_xlabel('Epoch')fig.suptitle('Training History')plt.show()plot_training_history(history)

结果曲线展示:

1.2 一张图两条曲线loss 写法总结

案例:gan-手写数字 画G_loss,D_loss
代码位置 :E:\项目例程\GNN\手写数字\3_可视化
步骤:

step1 定义数组

G_losses = []
D_losses = []

step2 添加数据

G_losses.append(sum_loss.item())
D_losses.append(d_loss.item())

step3 画图

x=[i for i in range(len(G_losses))]
figure = plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x,G_losses,label='G_losses')
plt.plot(x,D_losses,label='D_losses')
plt.xlabel("iterations",fontsize=15)
plt.ylabel("loss",fontsize=15)
plt.legend()
plt.grid()
plt.show()

效果

2.可视化测试结果

代码地址:E:\项目例程\猫狗分类\迁移学习\猫狗_resnet18_2 \猫狗分类_迁移学习可视化

  1. 定义结果可视化函数
    注意:plt.subplot(4,4,i+1) 应根据batch_size修改,本案例batch_size=16.故为4x4
# 测试结果可视化函数
def visualize_model(model):model.eval()with torch.no_grad():inputs, labels = next(iter(dataloaders['val']))inputs = inputs.to(device)labels = labels.to(device)outputs = model(inputs)preds = outputs.argmax(1)plt.figure(figsize=(9, 9))for i in range(inputs.size(0)):plt.subplot(4,4,i+1)  #根据batch_size修改plt.axis('off')plt.title(f'pred: {class_names[preds[i]]}|true: {class_names[labels[i]]}')im = no_normalize(inputs[i].cpu())plt.imshow(im)plt.savefig('train.jpg')plt.show()
  1. 调用函数
# 测试结果可视化
visualize_model(model_conv)

效果展示:

3 loss曲线生成及保存

代码参考:E:\项目例程\GNN\DCGAN\02DCGAN_oxford17
DCGAN生成鲜花

figure_save_path="./figures/"
plt.figure(1,figsize=(8, 4))plt.title("Generator and Discriminator Loss During Training")plt.plot(self.G_loss_list[::10], label="G")plt.plot(self.D_loss_list[::10], label="D")plt.xlabel("iterations")plt.ylabel("Loss")plt.axhline(y=0, label="0", c="g")  # asymptoteplt.legend()plt.savefig(self.figure_save_path + str(num_epochs) + 'epochs_' + 'loss.jpg', bbox_inches='tight')

4GAN -真实图片与生成图片

代码参考:E:\项目例程\GNN\DCGAN\02DCGAN_oxford17

(1)真实图片与生成图片对比

plt.figure(4,figsize=(8, 4))# Plot the real imagesplt.subplot(1, 2, 1)plt.axis("off")plt.title("Real Images")real = next(iter(self.dataloader))  # real[0]image,real[1]labelplt.imshow(utils.make_grid(real[0][:self.num_showimage] * 0.5 + 0.5, nrow=10).permute(1, 2, 0))# Load the Best Generative Model# self.G.load_state_dict(#     torch.load(self.model_save_path + 'disc_{}.pth'.format(epoch), map_location=torch.device(self.device)))self.G.eval()# Generate the Fake Imageswith torch.no_grad():fake = self.G(self.fixed_noise).cpu()# Plot the fake imagesplt.subplot(1, 2, 2)plt.axis("off")plt.title("Fake Images")fake = utils.make_grid(fake[:self.num_showimage] * 0.5 + 0.5, nrow=10)plt.imshow(fake.permute(1, 2, 0))# Save the comparation resultplt.savefig(self.figure_save_path + str(num_epochs) + 'epochs_' + 'result.jpg', bbox_inches='tight')plt.show()

(2)生成图片的gif

import matplotlib.pyplot as plt
import matplotlib.animation as animationfig = plt.figure(3,figsize=(5, 5))plt.axis("off")ims = [[plt.imshow(item.permute(1, 2, 0), animated=True)] for item in self.img_list]ani = animation.ArtistAnimation(fig, ims, interval=1000, repeat_delay=1000, blit=True)#HTML(ani.to_jshtml())# ani.to_html5_video()ani.save(self.figure_save_path + str(num_epochs) + 'epochs_' + 'generation.gif')

深度学习:可视化-结果loss acc可视化及测试数据显示相关推荐

  1. 损失能收敛到0么 深度学习_人工智能-Tensorflow进行深度学习的一些损失函数的可视化...

    TensorFlow目前是数值计算的最佳开源库,它使机器学习更快更容易.在这篇文章中,您将学习机器学习中使用的一些损失函数.损失函数在机器学习领域非常重要.它们用作测量模型预测输出Y_out与grou ...

  2. 【深度学习】模型训练过程可视化思路(可视化工具TensorBoard)

    [深度学习]模型训练过程可视化思路(可视化工具TensorBoard) 文章目录 1 TensorBoard的工作原理 2 TensorFlow中生成log文件 3 启动TensorBoard,读取l ...

  3. Keras深度学习实战(11)——可视化神经网络中间层输出

    Keras深度学习实战(11)--可视化神经网络中间层输出 0. 前言 1. 可视化神经网络中间层输出 2. 利用 Keras 可视化神经网络中间层输出 2.1 数据加载 2.2 可视化第一个卷积层的 ...

  4. 【深度学习实战】---TensorBoard网络可视化

    [深度学习实战]-TensorBoard网络可视化 前记 为了能够更加深层次的理解我们的网络结构,不必要是画一份简简单单的网络的草图(如[深度学习实战]迈出第一步------编写第一个神经网络),那么 ...

  5. 深度学习数据驱动_利用深度学习实现手绘数据可视化的生成

    前一段时间,我开发了Sketchify, 该工具可以把任何以SVG为渲染技术的可视化转化为手绘风格.(参考手绘风格的数据可视化实现 Sketchify) 那么问题来了,很多的chart是以Canvas ...

  6. 【深度学习系列】——神经网络的可视化解释

    这是深度学习系列的第三篇文章,欢迎关注原创公众号 [计算机视觉联盟],第一时间阅读我的原创!回复 [西瓜书手推笔记] 还可获取我的机器学习纯手推笔记! 深度学习系列 [深度学习系列]--深度学习简介 ...

  7. 深度学习网络和特征图可视化的工具介绍

    1.深度学习网络结构画图工具: 网络结构画图工具https://cbovar.github.io/ConvNetDraw/ 输入:层信息 输出:网络结构图 网络结构图实例 2.caffe可视化工具 输 ...

  8. 利用深度学习实现手绘数据可视化的生成

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 前一段时间,我开发了Sketchify, 该工具可以把任何以SVG为渲染技术的可视化转化为手绘风格.(参考手绘风格的数据可视化实现 ...

  9. 实战技术:利用深度学习实现手绘数据可视化的生成

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 前一段时间,我开发了Sketchify, 该工具可以把任何以SVG为渲染技术的可视化转化为手绘风格.(参考手绘风格的数据可视化实现 ...

最新文章

  1. Sort_Buffer_Size 设置对服务器性能的影响
  2. 算法-有向环和拓扑排序
  3. sklearn学习(一)
  4. Django:视图和URL配置
  5. c语言实现堆Stack(附完整源码)
  6. git和php的区别,Git与Github的有什么区别
  7. Python实战从入门到精通第十一讲——可接受任意数量参数的函数
  8. C11头文件threads.h声明了创建和管理线程,信号,条件变量的函数
  9. centos mysql-5.5.20_mysql-5.5.20+CentOS 6.2 编译安装全过程详解(2)
  10. python中软件包安装
  11. *第七周*数据结构实践项目三【负数把整数赶出队列】
  12. PotPlayer LAV MadVR SVP4/BFRC播放器设置(极为详细,硬解,渲染,插帧按CPU性能评级)
  13. 交换机trunk模式工作原理
  14. Java利用mpxj解析mpp格式文件
  15. english_搭配
  16. 让你细思极恐的社会潜规则
  17. getOutputStream() has already been called for this response 当前响应已经调用了方法getOutputStream()
  18. eclipse第十七课时
  19. day12 递归、表达式、内置函数
  20. 使用PayPal收款要注意哪些细节?

热门文章

  1. IT程序员怎么分级别,以及每个级别应该会什么内容?
  2. 未来楼宇智慧解决方案
  3. acer计算机硬件配置,硬件配置与游戏测试_Acer宏碁笔记本电脑_笔记本评测-中关村在线...
  4. java excel 数据有效性_Java 设置Excel数据验证(数据有效性)
  5. 维斯(Vizrt)虚拟演播室调试需要排的雷
  6. SAP纺织行业解决方案
  7. 2017第一季度工作总结
  8. DBeaver 如何配置离线驱动
  9. 【数据结构与算法】之深入解析“摘樱桃”的求解思路与算法示例
  10. 网络防火墙的性能参数