【《利用CP和Tucker分解的卷積神經網絡張量分解性能對比》9600字】_第1頁
【《利用CP和Tucker分解的卷積神經網絡張量分解性能對比》9600字】_第2頁
【《利用CP和Tucker分解的卷積神經網絡張量分解性能對比》9600字】_第3頁
【《利用CP和Tucker分解的卷積神經網絡張量分解性能對比》9600字】_第4頁
【《利用CP和Tucker分解的卷積神經網絡張量分解性能對比》9600字】_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

維度是相同而且呈對角狀態(tài),Tucker分解即為CP分解,三階張量的Tucker分特征提取和張量學習等有關方面有著重要的應用意義,同時也可以將其認為是3代碼實現(xiàn)過程本論文的訓練數(shù)據集選擇的是貓狗大戰(zhàn)訓練數(shù)據集,數(shù)據集為開源,通過論文的硬件限制,在這樣的情況下僅僅實驗了重復五次;在進行訓練后通過測總體來說,訓練是遍歷向網絡里添加數(shù)據集,不斷通過自動計算來調整神經網絡的權重,并將生成的卷積網絡層進行具體分解,將一個整體分解為向下的兩個層,當圖片傳入到網絡中時,從中可以清晰感知也是按照這樣的模式來首先需要對數(shù)據進行處理和打包,所以本文創(chuàng)建dataset.py文件實現(xiàn)這一操作,另外,該文件還要實現(xiàn)對圖片數(shù)據的處理,將其調整為分析所適合的樣式。實現(xiàn)數(shù)據的處理和打包需要引用到numpy模塊(用于數(shù)組的矩陣運算)、torch模塊(用于進行形狀一一本文中為貓狗大戰(zhàn)數(shù)據中的圖片的切片和分析)、PIL模塊(用于圖片處理)、glob模塊(用于定位計算機中特定格式的文件)和OS模塊(實現(xiàn)一些基本功能,由此能夠推斷通常用于文件的開閉、目錄的識別等)(張建國,孫曉茜,2021)。本功能的實現(xiàn)具體邏輯為:調用Python各種庫、模塊、方法,分別對訓練數(shù)據和測試數(shù)據進行標準化處理和封裝。本文創(chuàng)建了loader函數(shù),將其作為用于封裝訓練數(shù)據的訓練函數(shù),具體方法是首先利用名叫torchvision.transforms.Normalize的方法將相關數(shù)據進行標準化處理,然后將數(shù)據進行封裝。函數(shù)中還需要定義一些設定類的函數(shù),具體用于實現(xiàn)(林曉東,何偉明,2022):(1)確定同時訓練多少數(shù)據的參數(shù)batch_size;(2)是否選擇打亂數(shù)據的shuffle函數(shù);(3)設定多線程num_workers,確定同時幾個線程進行程序處理;(4)設定用于儲存的參數(shù)pin_memory。上述定義都需要在調用函數(shù)時給出數(shù)值,確定其具體的運行形式,例如:loader(path,batch_size=32,num_workers=4,pin在此之后,本文定義了test_loader函數(shù),對需要測試的數(shù)據進行封裝,與函數(shù)loader相同,需要對數(shù)據進行標準化,在這種理論框架的基礎上探討可得出再將其打亂后封裝入數(shù)據對象中,之后同樣設定相關參數(shù),除了內容不同,這兩個函數(shù)的基本思路保持一致(段鳴,余天翊,2019)。在數(shù)據處理階段,本文運用了多種統(tǒng)計測試手段來驗證數(shù)據的可靠性,并揪出可能存在的異常數(shù)據點。經由對數(shù)據特性的細致剖析,本文成功地剔除了那些顯著偏離常規(guī)的數(shù)據,同時確保保留有代表性的樣本資料。本文還實施了敏感性分析,旨在衡量參數(shù)調整對研究結果影響的深度,以此保證最終結論的牢固性和通用性。在對數(shù)據進行了簡單的處理封裝后,本論文將進行CP分解和Tucker分解的具體實現(xiàn),定義了decompositions.py文件,該方法的實現(xiàn)除了進行數(shù)據打包和封裝用到的numpy和torch模塊外,還要用到tensorly模塊(專門為張量學習、張量分解、張量代數(shù)進行Python設計的庫,使張量分解的具體分析變得更加簡本功能實現(xiàn)的基本邏輯為,主要利用Python實現(xiàn)張量分解的tensorly庫,分別編寫CP方法、Tucker方法函數(shù),從這些策略中看出實現(xiàn)兩種方法的數(shù)據處理和分析,在使用函數(shù)對數(shù)據進行分析后利用VBMF對矩陣進行排序,估計矩陣的秩并將其返回,用于之后的數(shù)據分析(劉啟航,張宇和,2022)。首先,定義函數(shù)CP_decomposition_conv_layer,該函數(shù)的主要目的是獲取轉換層和分析目標的具體排名,之后返回帶有分解的nn.Sequential對象,具體實現(xiàn)邏輯如下(李雅婷,趙麗萍,2020):首先對層權重進行張量CP分解,再設置卷積核、步長、padding的具體參數(shù)并從s到r逐點對層次進行定義,處理卷積層,之后再分別從深度垂直和深度垂直方向逐點進行卷積處理;在理論架構的校驗與改良過程中,本文搜集了廣泛且深入的數(shù)據素材。這些數(shù)據不僅囊括了多元的研究實體,還跨越了多樣的時間維度與社會情境,為理論架構的全面驗證奠定了堅實的基礎。借助統(tǒng)計軟件的量化分析,本文能夠有效地核查原理論架構的各項預設,揭示其潛在缺陷。未來研究將探索納入更多變量或擴大樣本規(guī)模,以期增強理論架構的解釋效力與預測精準度。之后,對r到t的卷積層進行定義并將偏差字段增加到層中,對其進行CP處理,通過張量變換先垂直處理再水平處理,之后提取張量對其進行壓縮,輸出新的張量分解后的卷積層并將其返回用于數(shù)據分析;另外需要定義Tucker方法的實現(xiàn)函數(shù)Tucker_decomposition_conv_layer,該方法的實現(xiàn)相對來說較為簡單,先獲取數(shù)據矩陣的秩并將其層次權重信息和獲得的秩輸入,在將通道由S減少到R3的基礎上對數(shù)據進行卷積處理并輸出具有R3輸入通道的常規(guī)2D卷積層和R3通道,通過這些數(shù)據可見之后逐點卷積將通道由R4增加到T,在進行權重處理后輸出利用Tucker方法處理的層(林志遠,之后需要定義排序函數(shù)estimate_ranks,用于將兩種張量方法下的輸出結果展開,利用VBMF對矩陣進行排序并估算其矩陣的秩。實現(xiàn)CP方法和Tucker方法的函數(shù)雖然實現(xiàn)的過程略有差異但是總體的方法都行相同的(趙鵬程,唐悅珂,2022):首先獲取轉換層,再返回CP或者Tucker數(shù)的梯度,如果是CP分解則優(yōu)化函數(shù)設置將學習率設定為0.000001,如果是Tucker分解則將學習率設定為0.001。在完成代碼后測試完畢后,本論文也具體引用貓狗大戰(zhàn)的數(shù)據集對其進行張量分解的測試分析。首先論文利用已經明確貓、狗分類圖片的訓練集來進行訓練之后,論文再引用測試集進行具體的分析,訓練集和測試集的引用數(shù)據截圖如圖4.1和4.2:cat.12492jpgcdogtipgdog2jpgdog3jpgdmtimdn1ijpg由于本文計算機硬件條件和論文的時間條件,卷積神經網絡總共進行五輪訓練,訓練過程如圖4.3:icrosoftWindows[版本10.0.19042.928](e)MicrosoftCorporation。保留所有權利。C:\Users\CZ>cdC:\Users\CZ\Desktop\biyesheji:Users\CZJDesktop\biyeshejipythonmain.py--train-trainpathC:VUsers\CZ\DesktopP:Anaconda3\lib\site-packages\torchvision\transforms\transformS.py:286:UserWarning:Theuseofthetransforms.Scaletransformisdeprecated,pleaseusetransforms.Resizepleaseusetransforns.ResizeinsD:Anaconda3\lib\site-packages\torchvision\transtforms\transformS.py:887:UserHarning:Theuseofthetransforus.RandonSizedCroptransformisdeprecated,pleaseusetransforms.RandomResizedCropinstead.pleaseusetransforms.RandomResizedCropinstead.")poch:0veragepredictiontime3.1761393022659186391Averagepredictiontime3.787769395677025391Lveragepredictiontime3.811720828Averagepredictiontime3.818020880984528391C:NLisers\CZVDesktop\biy在訓練過后,向卷積神經網絡中加入張量分解的辦法進行繼續(xù)訓練,論文分別以CP分解和Tucker分解進行訓練,根據前面的分析來看訓練過程以Tucker訓練的過程為例,Tucker分解訓練過程部分如圖4.4和4.5,由圖中我們可以明顯的對比看出,加入張量分解后訓練的平均時間更短,之前平均為3.8s左右,在加入了張量分解之后僅僅需要2.9s左右(李嘉和,張佩妍,2022)::Users\CZVDesktopbiresheji>pthomainpy—decopose:Users\CZVDesktopbiresheji>pthomainpy—decoposeLn2013,64,kerelsiz=13,3),strid=(1,1),pading-(1,1))WBNFEstinatedranksAhbacnda3\lib\sitepachagesltensorlybackendlcore,p:85:USerlermig:Inpartialsd:couvetingtoluP.ChekSDFNSforarailalealtenatiresifyouow2d(64,128,kerelsize=(3,3din=(1,1)VBFEstintedon26(128,128,,kernel_sow2d(256,256kerneling=(1onz20(256,512,kernelsiz=(3,3),tride=(1,1),peading=(1,1)BNFEstinatedranksLonw26(512,512,kernel_siz=(3,3),strid=(1,1),pading-(L,1)BFEstiatedrarksm26(512,512,kernelsiz=(3,3),stride=(1,1),pading-(1,1))BFEstinatedraksI14,157Lon:25[512,512,kernelsize=(3,3),strid=(1,1),pddin=(1,1)YBNFEstinatedLom2d[512,512,kernelsiz=(3,3),strid=(1,1),paddin=(1,1)YBNFEstin圖4.4貓狗大戰(zhàn)訓練集部分截圖:Anaconda3\lib\site-packages\torchvision\transforms\transforms.py:286:Userwarning:Theuseofthetransform:Anaconda3\lib\site-packages\torchvision\transforms\transforms.py:286:Userwarning:Theuseofthetransformansformisdeprecated,pleaseusetransforms.Resizeinsteadpleaseusetransforms.Resizeinstead."):Anaconda3\lib\site-packages\torchvision\transforms\transforms.py:887:UserWarning:Theuseofthetransforms.RandomSitransformisdeprecated,pleaseusetransforms.RandomResizedCrusetransforms.RandomResizedCropinstead.")Lveragepredictiontime2.888810899poch:0veragepredictiontime2.89503086619364veragepredictiontime2.8811699020poch:2veragepredictiontime2.8922891738774528391poch:3veragepredictiontime2.878577667124131391poch:4veragepredictiontime2.8843611914788365391iveragepredictiontime2.8859175172303337391圖4.5加入張量分解的訓練過程截圖在對卷積神經網路進行訓練后,本論文首先將未經過張量分解的卷積神經網絡識別準確度和經過CP、Tucker張量分解的卷積神經網絡識別準確度分別運行結果運行最高值進行對比,三種方法的準確度運行輸出結果如圖4.6、4.7、4.8(孫志強,周麗芳,2021):In[9:histcoplex=coplexCMmodel.fit(x=xtrain,y=y_train,epochs=10,batchsize=512,validationtest_score=coplex_CN_aodel.evaluate(x_test,y_test)print("\nTestlossofuycomplexCNWpodel:4f),andaccuracr.2f|5.fornat(testscore[0],testscorel[I]*100))Trainon6000060000/60000[========================][圖4.6不加入張量分解的準確度結果 ]TestlossofmycomplexCNNmodel0.4876,and圖4.7加入CP分解的準確度結果60000/60000[=====通過準確度結果,我們可以看出張量分解的準確度提高較為明顯,未經張量分解的卷積神經網絡識別準確度結果為76.80%,基于這一情境而CP分解和Tucker分解分別的結果為82.84%和84.42%,其中Tucker的準確度略微高于CP分解。之后本文專門分別利用CP分解和Tucker分解進行不同情況下的指標性能分析,分析的結果具體如下表4.1(吳俊杰,林靜宜,2022):算法名稱最高識別準確率(TOP-1)平均識別準確率(TOP-1)最高識別準確率(TOP-5)平均識別準確率(TOP-5)解的卷積神經網絡量分解的卷積其中,最高識別準確率為在經過五次分解中得到的準確度最高的結果,平均識別準確率指的是在進行相應的分解算法后測試五次的平均值;另外,TOP-1具體指的是數(shù)量比例最高的第一類指標測試成功的準確率結果,TOP-5為前五類指標的測試準確率結果,其中測試準確率分別為第一類或者前五類的準確樣本數(shù)除以總樣本數(shù)(華俊杰,陶靜宜,2022)。如此一來通過已有階段性研究的總結,對于下文也有一定的啟示作用,首先在研究方法上,本文能夠識別出一系列優(yōu)化和改進的空間。先前的研究階段為本文提供了寶貴的經驗教訓,揭示了哪些方法是行之有效的,哪些則需要進一步調整或摒棄。例如,在數(shù)據收集方面,本文可以更加注重樣本的多樣性和代表性,確保所選取的樣本能夠準確反映目標群體的整體特征。此外,針對不同的研究問題,靈活運用多種數(shù)據收集技術可以提高數(shù)據的全面性和可靠性。通過對結果的分析,在這樣的情況下我們可以看到四個準確率分析結果Tucker算法均高于CP算法,其中僅僅比較TOP-1時最高識別準確率差別較大,Tucker算法可以達到67.43%,而CP算法僅僅可以達到61.15%,而TOP-5時兩者的差距較小,平均識別準確率分別為83.91%和82.27%(祁俊逸,霍靜宜,2018)。總體來說,通過本論文的實例運行,本文發(fā)現(xiàn)Tucker算法的表現(xiàn)明顯優(yōu)于微調的過程如下圖(具體調整了SGD的數(shù)值):對模型進行微調采用了SGD隨機的梯度下降是廢,這一算法每一次訓練都是使用相同的樣本集,在每個批次的訓練中均會采用所有的樣本來進行計算,這其中有些數(shù)據對于該次計算是償付的,從中可以清晰感知有些計算是沒有意義的,而SGD更新模型參數(shù)的方法是在每一次新的訓練里都去隨機地選擇一個新的樣本,因此SGD的每次學習都是比較快的,并且可以進行即時更新(祁子雖然SGD相比來說更好,但是它也有其缺點:可能無法按照預計的正確方向來就進行,,并可能由此產生優(yōu)化擾動。擾動可能使得學習迭代次數(shù)變多,同時使得收斂速度減緩。由此能夠推斷但是凡事都有兩面性,從另一個方面來看,這個擾動帶來的最大好處就是在處理局部出現(xiàn)很多極小點的時候,它的這個特點就可以使當前參數(shù)的優(yōu)化方向從局部的極小點轉到一個更佳的局部極小點,C:Wsers\CZ\Desktop\siyesheji>pythonmain.py—fine_tune--trainpathC:Wsers\C2besktop\biyesheji\train1Tsers\CZ\Desktop\biyesheji(module):ModifiedResn(O):Conv2d(3,2,kernelsize=(1,1),strid1:Conv2d(214.kerneisize-3,3:stride-(1.1,padding-((2):Conv2d(14,64,kernel_size=(1,1),stride(0):Conv2d(64,29,kernel_size=(1,1),stride=(1,1).bia:Conv2d(29.26.kernelsize=(3.3),stride-j.;padding=(1.1),bias2):Conv2d(26,64,kernel_size=(1,1),stride=(MaxPoo12d(kernelsize=2.stride=2.padding=0.dilation=1,ceil_mode-FaO:Conv2d(64,32.kernel_size=(1,D.stride=(1,,bias=False)1:Conv2d(32,39.kernelsize-(3.3):stride-(1:1:paddi(2):Conv2d(39,128,kernel_size=(1.1),stride(0):Conv2d(128,43,kernel_size=(1,1),stride-(1,1),bia1):Conv2d(43,42,kernelsize=(3.3),stride=(1,D.padd(2):Conv2d(42,128.kernel_size-(1,1,strid9):MaxPoo12d(kernel_size=2.stride=2,padding-0,dilation=1,ceil_modO:Conv2d(128,59.kernel_size=(1,1),stride=(1,1),bias1:Conv2d(59,71,kernel_size-(3.3):stride-(1:1:padding((2):Conv2d(71,256.kernel_size=(1,1),stride(0):Conv2d(256,81.kernel_size=(1,1),stride-(1,1),biaA:Conv2d(81,78.kernel,size=(3,3):stride=(1,1:padding=(1,1),bias=F(2):Conv2d(78,256,kernel_size-(1,1),stride(0):Conv2d(256.73.kernel_size-(1,1),stride(1.1),bias:Conv2d(73.70.kerne1size=(3,3):stride=(,D.padding=(1.1),bias(2):Conv2d(70,256,kernel_size=(1,1),stride16):MaxPool2d(kernel_size-2,stride-2,padding-0,dilation-1,ceilmode-F(O):Conv2d(256,110,kernel_size-(1,1),stride-(1,D,bias①:Conv2d(110.131.kernel_size=3.3),stride=(.D:pad(2):Conv2d(131,512,kernel_size-(1,1),stridanv148,kernel_size=R:Conv2d(148,138,kernelsize=(3,3),stride-1,R:padding=(1,D,bias-False)(2):Conv2d(138,512,kernel_size=(1,1),stride(O):Conv2d(512,132.kernel_size=(1,1,stride=(,1),bia:Conv2d(132,121.kernelsize(3.3,stride-1:R:padding(2):Conv2d(121,512,kernel_size=(1.1),stride:MaxPoo12d(kernel_size=2.stride=2.padding=0.dilation=1,ce(0):Conv2d(512,157,kernel_size=(1,1),stride=(1,1),biaConv2d(157.144.kernelsize-(3.3).stride-i.:padding-(1,1),bi(2):Conv2d(144,512.kernel_size=(1,1),stride1:Conv2d(149.147.kernel_s、(2):Conv2d(147,512.kernel_size-(1.:Conv2d512.155.kernelsize-(1,1.stride-(1,D,bia:Conv2d(155,152,kerne!_size=(3,3),stride=,R:padding=(1,1)(2):Conv2d(152,512.kernel_size-(1.1),stride(30):MaxPoo12d(kernel_size=2,stride=2,padding=0,dilation=1,ceil_mo(0):Dropout(p=0.5.inplace(1:Linear(infeatures-25088,out_features-4096,bias-True)(3):Dropout(p-0.5.inplace-4):Linear(in_features=4096.out_features=4096,bias(6):Linear(in_features=4096,out_features=2,Anaconds3\1ib\sitepackages\torchvision\transforms\transforns.Dv:286:UserWarning:Theuseofthetransforms.Scaletran=foraisdeprecated.pleaseusetransforms.Resizpleaseusetransforms.ResizeinP:\Anaconda3\lib\site-packages\torchvision\transforms\transforms.py:887:EserWarning:Theuseofthetransforms.RandomSizeICroptransformisdeprecated,pleaseusetransforms:RandomResizedCroppleaseusetransforms.RandomResizedCropinstead.)veragepredictiontime2.8888108998poch:0sveragepredictiontime2.8950308661936495391poch:1eraepredictiontime2.8811699020893067391Averagepredictiontime2.89228917387Averagepredictiontime2.878577667124131391lveragepredictiontime2.88436119147FinishedfinetuninAveragepredictiontime2.8859175172303337391圖4.9對Tucker算法模型微調過程截圖本論文具體研究了張量分解在卷積神經網絡中的應用,最終通過對比分析明確了在貓狗大戰(zhàn)數(shù)據集下的Tucker分解效率總體高于CP分解效率。論文首先對張量分解、深度神經網絡,CP分解和Tucker分解的概念做出了具體的界定,之后明確了代碼實現(xiàn)的具體流程:先構建卷積神經網絡、再利用訓練集對網絡進行訓練,之后分別利用CP分解和Tucker分解對神經網絡進行訓練,通過分析的準確率具體分析兩種方法的效率;之后論文分別介紹了代碼三大功能的實現(xiàn)過程,之后利用代碼具體進行了分析,其中Tucker分解的最高準確率為84.42%,高于CP分解的最高準確率82.84%,由此本文得出結論:Tucker分解的表現(xiàn)效果優(yōu)于CP分解。雖然本論文實現(xiàn)了設計的全部功能,但是依舊存在一定的缺陷:由于硬件原因,訓練次數(shù)僅僅為五次,同時由于數(shù)據量和CPU性能的影響,代碼的實現(xiàn)耗費了大量的時間,只能調整參數(shù)以犧牲一定的準確性來得到分析結果??傮w來說,論文基本實現(xiàn)了驗證的功能,本文希望可以通過本論文的研究為今后的相關研究提供充分的理論基礎和實踐參考。集,2023:5.PatternRecognition,CVPR2014,Columbus,oH,USA,June23-28,[5]Y.Sun,X.Wang,X.Tang.DeeCVPR2015,Boston,MA,USA,June7-122(12)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論