python caffe使用,

  python caffe使用,

  本文主要介绍caffe的python接口生成配置文件学习。有需要的朋友可以借鉴一下。希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010简介:如何编写配置文件并将其转换为LMDB文件

  

目录

 

  Caffe是用C语言写的,可能很多人不熟悉,所以想用更简单的脚本语言实现。Caffe提供matlab接口和python接口。这两种语言都非常简单,容易形象化,学习速度更快,理解更深。

  半年前,我在学习caffe的时候,为了加深理解,写了一篇随笔,有一系列的CAFFE学习文章。半年后,很多人问了一些关于python接口和可视化的问题。现在有了一些空余时间,我再写一些随笔,大家一起学习。一些重复的内容我就不多说了,有兴趣的可以动起来:

  如何配置CAFFE的python接口?

  如何将图片转换成LMDB文件?

  如何计算训练数据的平均档?

  这些操作都是训练前的预处理操作,不管用什么界面都要用。

  

引言

 

  首先,我们需要掌握的是如何写一个配置文件,通过下面的代码来学习:

  # -*-编码: utf-8 -*-

  Spyder编辑器

  从caffe导入层作为L,参数作为P,到_proto

  Path=/home/xxx/data/ #保存数据和配置文件的路径

  Train_LMDB=path train_db #训练数据的LMDB文件的位置

  Val_LMDB=path val_db #验证数据LMDB文件的位置

  mean _ file=path mean . binary proto # mean文件的位置

  train _ proto=path train . proto txt #生成的训练配置文件保存的位置。

  Val_proto=path val.prototxt #保存生成的身份验证配置文件的位置

  #编写一个函数来生成网络

  def create_net(lmdb,batch_size,include_acc=False):

  #创建第一层:数据层。两种类型的数据向上传输:图片数据和相应的标签。

  数据,标签=L.Data(source=lmdb,backend=P.Data.LMDB,batch_size=batch_size,ntop=2,

  transform _ param=dict(crop _ size=40,mean _file=均值_ file,mirror=True))

  #创建第二个房子:卷积层

  conv1=L .卷积(data,kernel_size=5,stride=1,num_output=16,pad=2,weight _ filler=dict(type= Xavier ))

  #创建激活功能层

  relu1=L.ReLU(conv1,in_place=True)

  #创建一个池层

  pool1=L.Pooling(relu1,pool=P.Pooling.MAX,kernel_size=3,stride=2)

  conv2=L .卷积(pool1,kernel_size=3,stride=1,num_output=32,pad=1,weight _ filler=dict(type= Xavier ))

  relu2=L.ReLU(conv2,in_place=True)

  pool2=L.Pooling(relu2,pool=P.Pooling.MAX,kernel_size=3,stride=2)

  #创建一个完全连接的层

  fc3=L.InnerProduct(pool2,num_output=1024,weight _ filler=dict(type= Xavier ))

  relu3=L.ReLU(fc3,in_place=True)

  #创建一个辍学层

  drop3=L.Dropout(relu3,in_place=True)

  fc4=L.InnerProduct(drop3,num_output=10,weight _ filler=dict(type= Xavier ))

  #创建一个softmax层

  loss=L.SoftmaxWit

  hLoss(fc4, label)

   if include_acc: #在训练阶段,不需要accuracy层,但是在验证阶段,是需要的

   acc = L.Accuracy(fc4, label)

   return to_proto(loss, acc)

   else:

   return to_proto(loss)

  def write_net():

   #将以上的设置写入到prototxt文件

   with open(train_proto, w) as f:

   f.write(str(create_net(train_lmdb,batch_size=64)))

   #写入配置文件

   with open(val_proto, w) as f:

   f.write(str(create_net(val_lmdb,batch_size=32, include_acc=True)))

  if __name__ == __main__:

   write_net()

  通过上面这个文件的执行,我们就会得到两个配置文件:train.prototxt和val.prototxt,分别用于训练阶段和验证阶段。

  

 

  

图片转换成LMDB文件

 

  这种方式生成配置文件,必须有个前提,就是要先把原始图片转换成LMDB文件才行。如果我们已经把原始图片做成了一个列表清单(txt文件,一行一张图片),则可以不用LMDB格式作为输入数据,可以用ImageData作为数据源输入,代码如下:

  

# -*- coding: utf-8 -*-

 

  即第一层由原来的Data类型,变成了ImageData类型,不需要LMDB文件和均值文件,但需要一个txt文件。

  以上就是caffe的python接口生成配置文件学习的详细内容,更多关于caffe python接口生成配置文件的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: