资讯专栏INFORMATION COLUMN

caffe的python插口制作loss和accuracy曲线图

89542767 / 350人阅读

  此篇文章主要是给大家介绍了caffe的python插口制作loss和accuracy曲线图实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪


  前言


  使用python插口来运行caffe程序流程,根本原因是python很容易数据可视化。所以才建议大家在cmd下边运行python程序流程。如果一定要在cmd下边运作,不如直接用c++算了。


  强烈推荐使用jupyternotebook,spyder等设备来运行python编码,这样也和它数据可视化完美融合在一起。


  anaconda库


  我属于用anaconda来组装一连串python三方库的,因此我所使用的是spyder,与matlab页面类似的这款在线编辑器,在运行中,可以看一下各自变量数值,有利于了解,如下图所示:

01.png

  只要安装了anaconda,运行方式也非常方便,直接在终端输入spyder命令就可以了。


  python接口实现


  在caffe的训练过程中,我们如果想知道某个阶段的loss值和accuracy值,并用图表画出来,用python接口就对了。


  #-*-coding:utf-8-*-
  """
  Created on Tue Jul 19 16:22:22 2016
  author:root
  """
  import matplotlib.pyplot as plt
  import caffe
  caffe.set_device(0)
  caffe.set_mode_gpu()
  #使用SGDSolver,即随机梯度下降算法
  solver=caffe.SGDSolver('/home/xxx/mnist/solver.prototxt')
  #等价于solver文件中的max_iter,即最大解算次数
  niter=9380
  #每隔100次收集一次数据
  display=100
  #每次测试进行100次解算,10000/100
  test_iter=100
  #每500次训练进行一次测试(100次解算),60000/64
  test_interval=938
  #初始化
  train_loss=zeros(ceil(niter*1.0/display))
  test_loss=zeros(ceil(niter*1.0/test_interval))
  test_acc=zeros(ceil(niter*1.0/test_interval))
  #iteration 0,不计入
  solver.step(1)
  #辅助变量
  _train_loss=0;_test_loss=0;_accuracy=0
  #进行解算
  for it in range(niter):
  #进行一次解算
  solver.step(1)
  #每迭代一次,训练batch_size张图片
  _train_loss+=solver.net.blobs['SoftmaxWithLoss1'].data
  if it%display==0:
  #计算平均train loss
  train_loss[it//display]=_train_loss/display
  _train_loss=0
  if it%test_interval==0:
  for test_it in range(test_iter):
  #进行一次测试
  solver.test_nets[0].forward()
  #计算test loss
  _test_loss+=solver.test_nets[0].blobs['SoftmaxWithLoss1'].data
  #计算test accuracy
  _accuracy+=solver.test_nets[0].blobs['Accuracy1'].data
  #计算平均test loss
  test_loss[it/test_interval]=_test_loss/test_iter
  #计算平均test accuracy
  test_acc[it/test_interval]=_accuracy/test_iter
  _test_loss=0
  _accuracy=0
  #绘制train loss、test loss和accuracy曲线
  print'nplot the train loss and test accuracyn'
  _,ax1=plt.subplots()
  ax2=ax1.twinx()
  #train loss->绿色
  ax1.plot(display*arange(len(train_loss)),train_loss,'g')
  #test loss->黄色
  ax1.plot(test_interval*arange(len(test_loss)),test_loss,'y')
  #test accuracy->红色
  ax2.plot(test_interval*arange(len(test_acc)),test_acc,'r')
  ax1.set_xlabel('iteration')
  ax1.set_ylabel('loss')
  ax2.set_ylabel('accuracy')
  plt.show()


  最后生成的图表在上图中已经显示出来了。


  综上所述,这篇文章就给大家解答完毕了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128756.html

相关文章

  • caffepython插口形成环境变量学习培训

      此篇文章主要是详细介绍了caffe的python插口形成环境变量学习培训,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  caffe是C++语言表达所写的,可能大家不太熟,所以想要更方便的编程语言来达到。caffe给予matlab接口和python插口,这几种语言表达就比较简单,并且很容易开展数据可视化,导致学习培训更为迅速,了解更加深刻。  一年前,我在...

    89542767 评论0 收藏0
  • caffepython插口之手写数字识别mnist案例

      文中主要是给大家介绍了caffe的python插口之手写数字识别mnist案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  论文引言  机器学习第一个案例一般都是是mnist,只需这个案例彻底搞懂了,其他的便是触类旁通的事了。因为字数缘故,文中不简单介绍环境变量里边每一个指标的具体函义,如果要搞明白的,请参考我之前的微博文章:  数据访问层及主...

    89542767 评论0 收藏0
  • caffepython接口deploy形成caffemodel归类新图片

      本文主要是给大家介绍了caffe的python插口生成deploy文件学习培训及其用练习好一点的实体模型(caffemodel)来归类新的图片实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪  caffe的python插口生成deploy文件  假如要将练习好一点的实体模型用于检测新的图片,那必然必须得一个deploy.prototxt文件,这一...

    89542767 评论0 收藏0
  • Python实现双向RNN与堆叠双向RNN示例代码

      小编写这篇文章的一个主要目的,主要是给大家做一个详细的介绍,介绍的内容主要是利用Python知识,利用Python去实现RNN与堆叠的RNN,具体的实例代码,下面就给大家详细的去做一个解答。  1、双向RNN  双向RNN(Bidirectional RNN)的结构如下图所示。   双向的RNN是同时考虑过去和未来的信息。上图是一个序列长度为4的双向RNN结构。  双向RNN就像是我们做阅...

    89542767 评论0 收藏0
  • caffepython插口形成solver文件详细说明学习培训

      本文主要是给大家介绍了caffe的python插口形成solver文件详细说明学习培训实例,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的不断进步,尽早涨薪  也有一些基本参数必须计算出来的,并不是乱设定。  solver.prototxt的文件参数设置  caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面,如...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<