日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch(7)-自己设计神经网络会遇到的问题

發布時間:2023/12/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch(7)-自己设计神经网络会遇到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作pytorch架構遇到的問題

  • 1.網絡參數初始化
  • 2.查看當前可學習參數
  • 3.增加可學習的參數
  • 4.參數優化函數Adagrad
  • 5.直接修改網絡梯度值
  • 6.optimizers.zero_grad()報錯
  • 7.tensor.detach() 和 tensor.data 的區別

1.網絡參數初始化

在pytorch中,有自己默認初始化參數方式,所以定義好網絡以后,沒有特殊需求,不需要顯式進行初始化操作。也可調用內置特定初始化函數,詳見:https://blog.csdn.net/VictoriaW/article/details/72872036

也可以自定義初始化方式,詳見:https://blog.csdn.net/qq_36338754/article/details/97756378

類神經網絡層 Vs 函數神經網絡層:https://blog.csdn.net/victoriaw/article/details/72869680

2.查看當前可學習參數

函數查看現在的全部可訓練參數,定義網絡net之后查看.state_dict()屬性

net.state_dict()

或者

net.named_parameters()

3.增加可學習的參數

在網絡初始化函數中添加nn.Parameter類型變量,即可以實現:增加額外的可學習參數的操作。

self.coefficient = torch.nn.Parameter(torch.Tensor([1.55]))

參考資料:https://blog.csdn.net/qq_19672579/article/details/79195568

4.參數優化函數Adagrad

Adagrad是解決不同參數應該使用不同的更新速率的問題。Adagrad自適應地為各個參數分配不同學習率的算法。更新公式:
wt+1=wt+ηgt∑i=0tgiw^{t+1}=w^t+\eta \frac{g^t}{\sqrt{\sum_{i=0}^tg^i}}wt+1=wt+ηi=0t?gi?gt?

隨著更新次數增加,更新越來越慢。
參考資料:https://www.jianshu.com/p/a8637d1bb3fc

5.直接修改網絡梯度值

A.grad=num

num 為tensor 類型

6.optimizers.zero_grad()報錯

Traceback (most recent call last):
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1758, in
main()
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1752, in main
globals = debugger.run(setup[‘file’], None, None, is_module)
File “/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/pydevd.py”, line 1147, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/pp/.local/share/umake/ide/pycharm-professional/helpers/pydev/_pydev_imps/pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, ‘exec’), glob, loc)
File “/home/pp/PycharmProjects/Stein-Variational-Gradient-Descent-master/python/cyy_bayesian_nn_1.py”, line 296, in
svgd = svgd_bayesnn(X_train, y_train, batch_size=batch_size, n_hidden=n_hidden, max_iter=max_iter)
File “/home/pp/PycharmProjects/Stein-Variational-Gradient-Descent-master/python/cyy_bayesian_nn_1.py”, line 127, in init
optimizer.zero_grad()
File “/home/pp/anaconda3/envs/py36_torch/lib/python3.6/site-packages/torch/optim/optimizer.py”, line 163, in zero_grad
p.grad.detach()
RuntimeError: Can’t detach views in-place. Use detach() instead

解決嘗試:變換optimizer.zero_grad()的位置,沒用,手動置0 吧.

A.grad.zero_()

參考資料:https://blog.csdn.net/a19990412/article/details/85247465

7.tensor.detach() 和 tensor.data 的區別

x .data 返回和 x 的相同數據 tensor, 但不會加入到x的計算歷史里,且require s_grad = False, 這樣有些時候是不安全的, 因為 x.data 不能被 autograd 追蹤求微分 。
x.detach() 返回相同數據的 tensor ,且 requires_grad=False ,但能通過 in-place 操作報告給 autograd 在進行反向傳播的時候。

參考資料:https://blog.csdn.net/DreamHome_S/article/details/85259533

總結

以上是生活随笔為你收集整理的Pytorch(7)-自己设计神经网络会遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。