PyTorch出現錯誤“RuntimeError: Found dtype Double but expected Float”
1 錯誤描述
今天在除錯PyTorch程式碼時出現“RuntimeError: Found dtype Double but expected Float”的錯誤,相關提示資訊如下
File “/home/…/train.py”, line 78, in main
running_loss = trainer.train_one_epoch(epoch, qa=qa)
File “/home/…/model/…py”, line 347, in train_one_epoch
loss.backward()
File “/home/…/software/python/anaconda/anaconda3/envs/conda-general/lib/python3.7/site-packages/torch/tensor.py”, line 221, in backward
torch.autograd.backward(self, gradient, retain_graph, create_graph)
File “/home/…/software/python/anaconda/anaconda3/envs/conda-general/lib/python3.7/site-packages/torch/autograd/init.py”, line 132, in backward
allow_unreachable=True) # allow_unreachable flag
RuntimeError: Found dtype Double but expected Float
可以看到這是一個跟資料型別相關的錯誤;
2 相關資料
感謝網友lcqin111提供的資料——《Pytorch: RuntimeError: expected Double tensor (got Float tensor)》
裡面對這個問題進行了解釋。
3 解決方案
其實這個問題產生的原因就是資料型別不一致,比較solid一點的方法,就是從報錯的地方開始一點一點除錯程式碼,看看參與運算的張量是否存在型別不同的情況,例如:
如果a[FloatTensor]和b[DoubleTensor]是兩個參與運算的張量,且有運算程式碼“loss = criterion(a,b)”,則會引發上面的問題。
所以可以從出錯的程式碼位置一步步進行除錯;
其實,最主要的原因還是張量型別不一致,所以實際上將張量型別統一就可以了,
可以使用程式碼:
torch_tensor = torch_tensor.float()
3.1 小提示——使用double()則會佔用很多視訊記憶體
南溪自己試過用double()進行運算,不過這樣視訊記憶體佔用會增大許多,而很可能出現視訊記憶體爆炸的情況,所以最後還是使用FloatTensor型別;
相關文章
- PyTorch出現:RuntimeError: An attempt has been made to start a new process...報錯 (已解決)PyTorchError
- pytorch執行錯誤:RuntimeError: a leaf Variable that requires grad is being used in an in-place operationPyTorchErrorUI
- 執行時報錯RuntimeError: expected device cpu but got device cuda:0ErrordevGo
- python程式碼錯誤RuntimeError: Session is closedPythonErrorSession
- Angular 內容投影出現 No provider for TemplateRef found 錯誤的單步除錯AngularIDE除錯
- 出現錯誤 Project ‘org.springframework.boot:spring-boot-starter-parent’ not foundProjectSpringFrameworkboot
- Expected indentation of 14 spaces but found 16
- c語言中%f輸出double型和float型值C語言
- xcode6編譯錯誤,提示Expected a typeXCode編譯
- 小程式錯誤:Component is not found in path
- java double、float型別的比較Java型別
- float和double有什麼區別?
- Laravel 出現 419 錯誤Laravel
- Opencv出現detecMultiScale錯誤OpenCV
- ORA-00923: FROM keyword not found where expected
- Android:Unexpected lock protocol found in lock file. Expected 3, found 0.AndroidProtocol
- float double 型別資料極值表示型別
- AS打包出現app:transformClassesAndResourcesWithProguardForRelease錯誤APPORM
- 使用 sudo 命令出現錯誤
- SSH出現Connection refused錯誤
- 每日充電:踩坑expected ‘package‘, found ‘import‘PackageImport
- flutter和Android混編下出現“No implementation found for method xxxx on channel”錯誤FlutterAndroid
- Eclipse 啟動專案錯誤:class not foundEclipse
- opencv imshow 函式顯示 float64 格式錯誤_cv2_imshow floatOpenCV函式
- decimal,float和double的區別是什麼?Decimal
- android 打包出現錯誤Error: ResourceNameAndroidError
- Flutter 最常出現的典型錯誤Flutter
- shell指令碼執行錯誤 $‘\r‘:command not found指令碼
- 解決shell指令碼錯誤$’r’ command not found指令碼
- 解決 The ‘supervisor==3.2.0‘ distribution was not found and is required by the application錯誤UIAPP
- 如何處理Eclipse錯誤訊息 The declared package does not match the expected packageEclipsePackage
- YOLOv5-6.0訓練出錯及解決方法(RuntimeError)YOLOError
- git push出現Permission denied (publickey)錯誤Git
- kubernetes 載入pod出現ErrImageNeverPull錯誤
- 埠占用出現的不同的錯誤:
- nacos2.3.0版本403 user not found錯誤
- pytorch 踩坑,TypeError: expected seqence object with len>_0 or a single integer_typeerror: expected sequence object with len __ 0PyTorchErrorObject
- mysql執行函式出現1418錯誤MySql函式