pytorch 7 自己設計神經網路會遇到的問題

2021-09-27 01:18:56 字數 2396 閱讀 6394

在pytorch中,有自己預設初始化引數方式,所以定義好網路以後,沒有特殊需求,不需要顯式進行初始化操作。也可呼叫內建特定初始化函式,詳見:

也可以自定義初始化方式,詳見:

類神經網路層 vs 函式神經網路層:

函式檢視現在的全部可訓練引數,定義網路net之後檢視.state_dict()屬性

net.state_dict()

或者

net.named_parameters()

在網路初始化函式中新增nn.parameter型別變數,即可以實現:增加額外的可學習引數的操作。

self.coefficient = torch.nn.parameter(torch.tensor([1.55]))

adagrad是解決不同引數應該使用不同的更新速率的問題。adagrad自適應地為各個引數分配不同學習率的演算法。更新公式:

w t+

1=wt

+ηgt

∑i=0

tg

iw^=w^t+\eta \frac^tg^i}}

wt+1=w

t+η∑

i=0t

​gi​

gt​

a.grad=num

num 為tensor 型別

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, ininit

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_()

x .data 返回和 x 的相同資料 tensor, 但不會加入到x的計算歷史裡,且require s_grad = false, 這樣有些時候是不安全的, 因為 x.data 不能被 autograd 追蹤求微分 。

x.detach() 返回相同資料的 tensor ,且 requires_grad=false ,但能通過 in-place 操作報告給 autograd 在進行反向傳播的時候。

如何入門Pytorch之三 如何優化神經網路

在上一節中,我們介紹了如何使用pytorch來搭建乙個經典的分類神經網路。在本節中,我們將介紹從資料集到模型各個部分的調整,從而可以有乙個完整的解決思路。1 資料集部分 1.1 資料集劃分 當然,還有一些需要考慮的問題 資料表徵,時間敏感性和資料冗餘。在資料表徵中,隨機打亂 shuffle 是乙個不...

pytorch 搭建自己的神經網路和各種優化器例項

import torch import torchvision import torchvision.transforms as transform import torch.utils.data as data import matplotlib.pyplot as plt from torch....

如何用pytorch搭建乙個簡單的神經網路?

匯入模組 import torch import torch.nn.functional as f from torch.autograd import variable import matplotlib.pyplot as plt x torch.unsqueeze torch.linspace...