哪里有學編程的培訓班神馬seo教程
一、卷積操作
(一)普通卷積(Convolution)
(二)空洞卷積(Atrous Convolution)
? ? ? ? 根據空洞卷積的定義,顯然可以意識到空洞卷積可以提取到同一輸入的不同尺度下的特征圖,具有構建特征金字塔的基礎。
(三)深度可分離卷積(Depthwise-Separable Convolution)
? ? ? ? 在對深度可分離卷積具有一定的了解后,我產生了一種“既然模型參數大幅度減少了,那么該模型的運行時間應該也會大幅度縮減”的想法??墒?#xff0c;當我分別在GPU、CPU上進行實驗時,我發(fā)現結果并不與我當初所想相同。后經過查閱資料[13][14]進一步加深了我對硬件計算優(yōu)勢以及深度可分離卷積的理解。(注:1)實際上,通常我們一層卷積之后都會加深特征圖深度,但是我所設計的實驗保持了原有深度前向計算。同時,一個卷積網絡也應顧及到模型精確性適當使用DSC而非完全;2)參考資料[13]具有與我相同思想的不同模型之間的對比試驗)
? ? ? ? 適合GPU運算的運算類型有1)大量輕量級運算;2)高度并行運算:3)計算密集型:4)浮點型運算等。CPU擅長于串行運行。

? ? ? ? 針對DSC有可能出現模型參數大幅度減少,但模型運行時間卻不下降的現象,可能存在以下原因:
? ? ? ? 1)許多深度學習加速器和庫(如CUDA和cuDNN),對深度可分離卷積的優(yōu)化可能不夠;
? ? ? ? 2)盡管深度可分離卷積需要的乘、加運算較少,但與普通卷積相比,它可能需要更多的內存訪問操作,這在GPU上可能導致效率降低;
? ? ? ? 3)受限于自身設備的顯存容量。
(四)轉置卷積(Transpose Convolution)
? ????????轉置卷積是一種卷積,它將輸入和核進行了重新排列,同卷積一般是做下采樣不同,它通常用作上采樣。如果卷積將輸入從(h,w)變成了(h‘,w'),同樣超參數下轉置卷積將(h‘,w')變成(h,w)。
? ? ? ?轉置卷積可以變?yōu)閷说木仃嚦朔?。轉置卷積是一種變化了輸入和核的卷積,來得到上采樣的目的,其并不等同于數學上的反卷積概念。在深度學習中,反卷積神經網絡指用了轉置卷積的神經網絡。
二、池化操作
? ? ? ? 池化操作主要的作用為1)減少網絡計算量與內存消耗;2)增加感受野大小;3)增加平移不變性(即較小的特征偏移也不影響特征輸出)。從某種角度上來說,Pooling操作是一種對現存硬件計算能力和存儲設備的妥協,其在某些卷積神經網絡(如Resnet)可以被忽略。
三、數據歸一化操作
? ? ? ? 數據歸一化操作中(以BatchNormal為例),β和γ參數是需要計算梯度更新的學習參數,數據歸一化行為在Train、Test過程中是不一樣的。在Train過程中,我們需要不斷計算反向梯度更新β、γ參數,而在Test過程中我們是會固定前面學習得到的β、γ參數(Pytorch中測試調用net.eval())。
? ? ? ? 批量歸一化的主要作用:
? ? ? ? 1)控制傳入下一層的特征圖數據,有效減少梯度爆炸和梯度消失的可能;
? ? ? ? 2)減少對參數初始化的依賴;
? ? ? ? 3)便于應用更高的學習率,實現更快的收斂。
四、深度學習中的Batch、Epoch
? ? ? ? 反向梯度計算以更新模型權值等參數發(fā)生于一個Batch迭代后。初期訓練時,我認為足夠的Batch樣本數對于模型的快速收斂較為重要。那么,如果受限于自身GPU顯存限制,我們可以進一步權衡在CPU上訓練更多樣本數的Batch,而放寬訓練時間這一要求。
? ? ? ? 在合理范圍內,增大Batch_Size具有以下優(yōu)點[11]:
? ? ? ? 1)內存利用率提高了,大矩陣乘法的并行化效率提高;
? ? ? ? 2)跑完一次epoch(全數據集)所需的迭代次數減少,對于相同數據量的處理速度進一步加快;
? ? ? ? 3)在一定范圍內,一般來說Batch Size越大,其確定的下降方向越可能對準極值低點,訓練引起損失震蕩越小。

五、在.ipynb文件中調用不同路徑位置文件的方法
(1)首先被引.ipynb文件轉換為.py文件,然后在.ipynb文件中頭部添加sys.path.insert(0,r"絕對路徑")或sys.path.append(r“絕對路徑”)[17]。
(2)編寫.ipynb解析文件置于同一文件夾下[16]。
Pytorch參考資料:
[1]?在CV/NLP/DL領域中,有哪些修改一行代碼或者幾行代碼提升性能的算法? - 圈圈的回答 - 知乎
https://www.zhihu.com/question/427088601/answer/1544199551.
[2]在CV/NLP/DL領域中,有哪些修改一行代碼或者幾行代碼提升性能的算法? - 陀飛輪的回答 - 知乎 https://www.zhihu.com/question/427088601/answer/1587333057
[3]PyTorch 中文文檔
[4]課時61 什么是卷積-1_嗶哩嗶哩_bilibili
[5]PyTorch Forums
[6]https://en.wikipedia.org/wiki/Convolutional_neural_network
[7]數字圖像處理:第四版/(美)拉斐爾C.岡薩雷斯(Rafael C.Gonzalez),(美)理查德E.伍茲(Richard E.Woods)著;阮秋琦等譯.——北京:電子工業(yè)出版社,2020.5.
[8]深入理解空洞卷積 - 知乎
[9]演示分組,深度,深度可分離卷積|3D卷積神經網絡_嗶哩嗶哩_bilibili
[10]卷積神經網絡之深度可分離卷積(Depthwise Separable Convolution) - 知乎
[11]談談深度學習中的 Batch_Size_機器學習batch size作用_ycheng_sjtu的博客-CSDN博客
[12]pytorch統(tǒng)計模型參數量并輸出_pytorch輸出模型參數量_xidaoliang123的博客-CSDN博客
[13]薰風讀論文:MobileNet 詳解深度可分離卷積,它真的又好又快嗎? - 知乎
[14]三分鐘搞懂CPU, GPU, FPGA計算能力 - 知乎
Python參考資料:
[15]Python:為什么類中的私有屬性可以在外部賦值并訪問_python 類外訪問私有屬性_Ding Jiaxiong的博客-CSDN博客
[16]調用jupyter notebook文件內的函數一種簡單方法_AlexInML的博客-CSDN博客
[17]Jupyter Notebook引入外部的py文件中的方法_dirtyboy6666的博客-CSDN博客