1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

caffe的python插口形成环境变量学习培训

介绍

本文主要详细介绍了caffe的python插口形成环境变量学习培训,希望能对大家有所帮助。

caffe的python插口形成环境变量学习培训

使用Python插口编写环境变量

如果大家想要更方便的编程语言来达到目的,Caffe提供了Matlab接口和Python插口,这些语言表达比较简单,并且很容易开展数据可视化,以便更快地学习培训和了解深度学习。
一年前,我在学习Caffe时,为了加深记忆,写了很多生活随笔,包含了多方面的Caffe学习内容。后来好多人问我关于Python插口和数据可视化方面的相关问题。现在有点儿空余时间,就又写了一些随笔,希望与大家一起学习。下面的实际操作都是练习以前的预备处理实际操作,无论是用哪种插口,都会用到。

编写环境变量

首先,我们需要了解如何编写环境变量。根据下方的编码去学习:

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

"""

SpyderEditor

"""

fromcaffeimportlayersasL,paramsasP,to_proto

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

train_lmdb=path+'train_db'#训练数据LMDB文件的位置

val_lmdb=path+'val_db'#验证数据LMDB文件的位置

mean_file=path+'mean.binaryproto'#均值文件的位置

train_proto=path+'train.prototxt'#生成的训练配置文件保存的位置

val_proto=path+'val.prototxt'#生成的验证配置文件保存的位置

#编写一个函数,用于生成网络

defcreate_net(lmdb,batch_size,include_acc=False):

#创建第一层:数据层。向上传递两类数据:图片数据和对应的标签

data,label=L.Data(source=lmdb,backend=P.Data.LMDB,batch_size=batch_size,ntop=2,

transform_param=dict(crop_size=40,mean_file=mean_file,mirror=True))

#创建第二屋:卷积层

conv1=L.Convolution(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.Convolution(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)

#创建一个dropout层

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

fc4=L.InnerProduct(drop3,num_output=10,weight_filler=dict(type='xavier'))

#创建一个softmax层

loss=L.SoftmaxWithLoss(fc4,label)

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

acc=L.Accuracy(fc4,label)

returnto_proto(loss,acc)

else:

returnto_proto(loss)

defwrite_net():

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

withopen(train_proto,'w')asf:

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

#写入配置文件

withopen(val_proto,'w')asf:

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文件,一列一张照片),则可以用ImageData做为数据库键入,进行如下编码:

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

fromcaffeimportlayersasL,paramsasP,to_proto

path='/home/xxx/data/'

train_list=path+'train.txt'

val_list=path+'val.txt'

train_proto=path+'train.prototxt'

val_proto=path+'val.prototxt'

defcreate_net(img_list,batch_size,include_acc=False):

data,label=L.ImageData(source=img_list,batch_size=batch_size,new_width=48,new_height=48,ntop=2,

transform_param=dict(crop_size=40,mirror=True))

conv1=L.Convolution(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.Convolution(pool1,kernel_size=53,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)

conv3=L.Convolution(pool2,kernel_size=53,stride=1,num_output=32,pad=1,weight_filler=dict(type='xavier'))

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

pool3=L.Pooling(relu3,pool=P.Pooling.MAX,kernel_size=3,stride=2)

fc4=L.InnerProduct(pool3,num_output=1024,weight_filler=dict(type=&

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6825.html