此篇文章主要是詳細介紹了caffe的python插口形成環境變量學習培訓,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪
caffe是C++語言表達所寫的,可能大家不太熟,所以想要更方便的編程語言來達到。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()
根據以上這一文件信息實行,大家就能得到2個環境變量:train.prototxt和val.prototxt,各自用以練習環節和檢驗環節。
圖片格式轉換成LMDB文檔
這種方法形成環境變量,務必有一個前提條件,便是首先要把原始圖片轉變成LMDB文檔才能。假如我們已經將原始圖片做成一個1個目錄明細(txt文件,一列一張照片),則可以不LMDB文件格式做為錄入數據,能用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='xavier')) relu4=L.ReLU(fc4,in_place=True) drop4=L.Dropout(relu4,in_place=True) fc5=L.InnerProduct(drop4,num_output=7,weight_filler=dict(type='xavier')) loss=L.SoftmaxWithLoss(fc5,label) ifinclude_acc: acc=L.Accuracy(fc5,label) returnto_proto(loss,acc) else: returnto_proto(loss) defwrite_net(): # withopen(train_proto,'w')asf: f.write(str(create_net(train_list,batch_size=64))) # withopen(val_proto,'w')asf: f.write(str(create_net(val_list,batch_size=32,include_acc=True))) if__name__=='__main__': write_net()
即第1層從原來的Data類型,成了ImageData類型,不用LMDB文件或平均值文檔,但是需要1個txt文件。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128811.html
本文主要是給大家介紹了caffe的python插口形成solver文件詳細說明學習培訓實例,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的不斷進步,盡早漲薪 也有一些基本參數必須計算出來的,并不是亂設定。 solver.prototxt的文件參數設置 caffe在訓練的時候,需要一些參數設置,我們一般將這些參數設置在一個叫solver.prototxt的文件里面,如...
本文主要是給大家介紹了caffe的python插口生成deploy文件學習培訓及其用練習好一點的實體模型(caffemodel)來歸類新的圖片實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 caffe的python插口生成deploy文件 假如要將練習好一點的實體模型用于檢測新的圖片,那必然必須得一個deploy.prototxt文件,這一...
文中主要是給大家介紹了caffe的python插口之手寫數字識別mnist案例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 論文引言 機器學習第一個案例一般都是是mnist,只需這個案例徹底搞懂了,其他的便是觸類旁通的事了。因為字數緣故,文中不簡單介紹環境變量里邊每一個指標的具體函義,如果要搞明白的,請參考我之前的微博文章: 數據訪問層及主...
此篇文章關鍵給大家介紹了python格式Caffe圖片數據信息均值測算學習培訓實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以一些幫助,祝愿大家多多的發展,盡早漲薪 前言 照片減掉均值后,然后再進行練習和檢測,也會提高速度與精密度。因而,通常在各類實體模型中都有這種操作。 那么這樣的均值是怎么來的呢,實際上是測算全部svm分類器的均值,計算出來后,儲存為均值文檔,在今后的檢測中,就...
此篇文章主要是給大家介紹了caffe的python插口制作loss和accuracy曲線圖實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪 前言 使用python插口來運行caffe程序流程,根本原因是python很容易數據可視化。所以才建議大家在cmd下邊運行python程序流程。如果一定要在cmd下邊運作,不如直接用c++算了。 強烈推...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02