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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。