1.BacthNorm層的作用:
BN的基本思想其實相當直觀:因爲深層神經網絡在做非線性變換前的激活輸入值(就是那個x=WU+B,U是輸入)隨着網絡深度加深或者在訓練過程中,其分佈逐漸發生偏移或者變動,之所以訓練收斂慢,一般是整體分佈逐漸往非線性函數的取值區間的上下限兩端靠近(對於Sigmoid函數來說,意味着激活輸入值WU+B是大的負值或正值),所以這導致反向傳播時低層神經網絡的梯度消失,這是訓練深層神經網絡收斂越來越慢的本質原因,而BN就是通過一定的規範化手段,把每層神經網絡任意神經元這個輸入值的分佈強行拉回到均值爲0方差爲1的標準正態分佈,其實就是把越來越偏的分佈強制拉回比較標準的分佈,這樣使得激活輸入值落在非線性函數對輸入比較敏感的區域,這樣輸入的小變化就會導致損失函數較大的變化,意思是這樣讓梯度變大,避免梯度消失問題產生,而且梯度變大意味着學習收斂速度快,能大大加快訓練速度。
2.PyTorch中網絡裏面的inplace=True字段的意思
在例如
nn.LeakyReLU(inplace=True)
中的inplace
字段是什麼意思呢?有什麼用?
inplace=True
的意思是進行原地操作。例如
x=x+5
,對x
就是一個原地操作,y=x+5
,x=y
,完成了與x=x+5
同樣的功能但是不是原地操作,上面
LeakyReLU
中的inplace=True
的含義是一樣的,是對於Conv2d
這樣的上層網絡傳遞下來的tensor直接進行修改,好處就是可以節省運算內存,不用多儲存變量y
。
3.如何進入Tensorboard進行可視化
tensorboard.exe --logdir=runs(runs前面不能加空格!!!)
4.如何由子目錄回到根目錄
cd..