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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445133.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445133.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445133.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python里的OS模塊常用函數說明

Python的標準庫中的os模塊包含普遍的操作系統功能。如果你希望你的程序能夠與平臺無關的話,這個模塊是尤為重要的。即它允許一個程序在編寫后不需要任何改動,也不會發生任何問題,就可以在Linux和Windows下運行。 下面列出了一些在os模塊中比較…

深度模型壓縮論文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

文章目錄1.摘要和背景1.1 摘要1.2 背景2.方法和貢獻2.1 方法2.1.1 訓練過程2.1.2 loss介紹2.2 貢獻3.實驗和結果3.1 實驗3.2 結果4.總結和展望4.1 總結4.2 展望主要貢獻:基于網絡蒸餾方法,提出了一種提升裁剪后模型的精度的方法!將訓練時間大…

關系數據庫——基礎

數據庫系統概論 四個基本概念 數據:數據庫中存儲的基本對象,描述一個事物的符號記錄,數據和其語義不可分開說 數據庫(DB):是長期儲存在計算機內、有組織的、可共享的大量數據的集合。 數據庫管理系統&a…

Python(27)-模塊

模塊、包1.模塊導入的方式2.使用as給模塊取一個別名(大駝峰命名法)3.從模塊中導入部分工具4.從模塊中導入全部工具5.模塊搜索順序6__name__7.包8.發布模塊、安裝模塊、卸載包9.pip安裝第三方模塊本系列博文來自學習《Python基礎視頻教程》筆記整理&#…

Wow6432Node

64 位版本 Windows 中的注冊表分為 32 位注冊表項和 64 位注冊表項。許多 32 位注冊表項與其相應的 64 位注冊表項同名,反之亦然。 64 位版本 Windows 包含的默認 64 位版本注冊表編輯器 (Regedit.exe) 可顯示 64 位和 32 位的 注冊表項。WOW64 注冊表重定向器為 32 位程序提供…

如何使用docker配置深度學習開發環境

文章目錄1.底層驅動的安裝1.1 操作系統的安裝1.2 顯卡驅動的安裝1.3 cuda的安裝2.使用docker配置深度學習開發環境2.1 docker的安裝2.2 nvidia_docker的安裝2.3 安裝過程中的問題2.3.1 docker和nvidia_docker的版本不匹配的問題。2.3.2 解決每次運行docker命令的時候要加sudo.2…

反射全解

反射的概念 反射的引入: Object obj new Student(); 若程序運行時接收到外部傳入的一個對象,該對象的編譯類型是Object,但程序又需要調用該對象運行類型的方法: 1.若編譯和運行類型都知道,使用 instanceof判斷后&…

MachineLearning(4)-核函數與再生核希爾伯特空間

核函數與再生核希爾伯特空間1.支持向量積-核函數2.一個函數為核函數的條件3.核函數與希爾伯特空間3.1希爾伯特空間-Hilbert空間1.支持向量積-核函數 核(kernel)的概念由Aizenman et al.于1964年引入模式識別領域,原文介紹的是勢函數的方法。在那之后,核…

CRegKey 注冊表操作

1.簡介 CRegKey提供了對系統注冊表的操作方法,通過CRegKey類,可以方便的打開注冊表的某個分支或子鍵(CRegKey::Open),可以方便的修改一個鍵的鍵值(CRegKey::SetValue),也可以查詢某…

進程基礎

進程的基本概念 程序順序執行的特征: 1)順序性:處理機嚴格按照程序所規定的順序執行,每一步操作必須在下一步操作開始前執行 2)封閉性:程序在封閉的環境下運行,程序獨占資源,資源的狀…

用Docker容器自帶的tensorflow serving部署模型對外服務

相信很多人和我一樣,在試圖安裝tensorflow serving的時候,翻遍了網上的博客和官網文檔,安裝都是以失敗而告終,我也是一樣,這個問題折磨了我兩個星期之久,都快放棄了。幸運的是在同事的建議下,我…

C資源

云風最近寫了一篇博客《C語言的前世今生》。作為長期使用C語言開發網絡游戲服務器的程序員,云風是有理由寫這樣一篇文字,不過還是感覺談的不夠深入,C語言在業界使用的現狀沒有怎么描寫,有些意猶未盡。在這里想比較系統的談談個人對…

學點數學(2)-特征函數

特征函數1.數列特征方程2.矩陣特征方程3.微分方程特征方程4.積分方程特征方程特征方程是為研究相應的數學對象而引入的一些等式,這些等式描述了特定對象的特性。依據研究的對象不同,特征方程包括數列特征方程、矩陣特征方程、微分方程特征方程、積分方程…

GCC如何產生core dump

先決條件1.安裝apport(automatically generate crash reports for debugging)2.修改/etc/security/limits.conf文件,使允許core dump,或者用ulimit -c unlimited設置core dump文件的大小為unlimited3.C/C的編譯開關-g(…

經典的進程同步問題

經典的進程同步問題 普通版:一類進程作為生產者,生產產品,生產的產品放入一個緩沖區,消費者從緩沖區中取出產品,需要保證生產者不可以向滿的緩沖區中添加產品,消費者不可以從空的緩沖區中取出產品。同一時刻…

面試題匯總---深度學習(圖像識別,NLP內容)

文章目錄1.基本概念1.1 為什么神經網絡中深度網絡的表現比廣度網絡表現好?1.2 推導BP算法1.3 什么是梯度消失和梯度爆炸?1.4 常用的激活函數有哪些?1.5 常用的參數更新方法有哪些?1.6 解決過擬合的方法?數據層面模型層…

Linux-2.6.25 TCPIP函數調用大致流程

Linux-2.6.25 TCPIP函數調用大致流程學習目的,隨手筆記。函數和文字說明會不斷補充更新。Changelog2008.10.08 最近找工作忙。暫時緩緩插口層系統調用sendsys_sendsys_sendtosendtosys_sendtosock_sendmsgsendmsgsys_sendmsgsock_sendmsgwritesys_writevfs_write…

Python(28)-文件,os模塊

文件1. 文件2. 文件的基本操作3. 讀取文件open()3.1 文件指針: 標記從哪一個位置開始讀取數據.3.2 文件的打開方式mode3.3 文件按行讀取3.3.1 readline()3.3.2 readlines()4.文件輸出f.write(),print()5.文件復制5.1 小文件復制(搬家)5.2 大文件復制&…

IOCP的程序

C代碼 #include <winsock2.h> #include <mswsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <assert.h> #include "vld.h" #pragma message("automatic link to ws2_32.lib and…

PaperNotes(3)-圖像分割-RCNN-FCN-Boxsup

圖像分割算法對比小結1.{基本概念}2.{R-CNN}2.1R-CNN 網絡結構選擇性搜索算法為什么選擇SVM作分類器邊框回歸2.2{R-CNN 訓練}2.3{R-CNN實驗結果}2.4{R-CNN語義分割}2.5{補充材料}2.5.1{R-CNN建議區域放縮}2.5.2{IOU閾值設置不一樣的原因}2.5.3{Bounding-box回歸修正}2.6{R-CNN存…