1. 程式人生 > >Pytorch RuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/generic/THTensorMath.c:2864

Pytorch RuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/generic/THTensorMath.c:2864

pytorch在得到dataset時沒有問題,得到DataLoader時也沒有問題,以batch size = 32遍歷資料時,出現了:

RuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/generic/THTensorMath.c:2864

除錯過程:    

1. 將batch size = 1 時,不出現錯誤。推斷有圖片跟其他的不一致.

    

2. 輸出open之後的每個img,發現有一個是

    <PIL.JpegImagePlugin.JpegImageFile image mode=L size=375x500 at 0x7F3B05F93668>

    而其他的都是

    <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=375x500 at 0x7F3B05F93668>

    model不同。


3. 輸出每個圖片的size,將batch size 置 1,

    看到有幾張圖片的channel是1( torch.Size([1, 1, 224, 224])),其他的都是3 (torch.Size([1, 3, 224, 224]))

    
4. 打算輸出圖片路徑,看這個圖片有什麼不同:
    又一個坑!!!
    DataLoader 的引數num_workers大於1時,多執行緒
,這樣輸出的圖片路徑和圖片可能並不對應,所以根據圖片路徑看圖片的時候,並沒有什麼不同。
    經師兄提醒,將num_workers設為1,得到channel=1的圖片的路徑,開啟看,是黑白圖!
    到此終於知道原因了!
    
    解決方法:
1.  處理資料時:load 圖片,open(image_path), 判斷如果是黑白圖,則轉為RGB,這樣channel=3,與其他圖片就一致了。
if img.mode == "L": 
    img = img.convert("RGB")

    或者

if len(img.getbands())==1: 
    img = img.convert("RGB")

參考連結:    https://blog.csdn.net/icamera0/article/details/50647465

                     https://blog.csdn.net/icamera0/article/details/50843172

2. 也可以在 img = open(image_path) 之後修改img

參考連結:

https://github.com/DmitryUlyanov/deep-image-prior/commit/8067fbbae78637e743ce40f362d0bdfdebfcd6ad

相關推薦

Pytorch RuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/generic/THTensorMath.c:2864

pytorch在得到dataset時沒有問題,得到DataLoader時也沒有問題,以batch size = 32遍歷資料時,出現了:RuntimeError: inconsistent tensor sizes at /pytorch/torch/lib/TH/gener

解決RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:70&NVIDIA-SMI has failed because it couldn't c

解決兩個問題: (1)RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:70 (2)NVIDIA-SMI has failed because it couldn

pytorch教程[2] Tensor的使用

pan 使用 resp .mm tensor comment dimen edi imp [1]中的程序可以改成如下對應的Tensor形式: import torch dtype = torch.FloatTensor # dtype = torch.cuda.Flo

pytorch系列------2 tensor基礎

pytorch Tensor的基本用法 Tensor的建立 索引,合併,切片 初始化 數學操作 1. Tensor的建立 1) 隨機數字 torch.rand(*sizes, out=None) → Tensor 返回一個張量,包含了從區間

PyTorch 生成隨機數Tensor(標準分佈、標準正態、離散正態……)

在使用PyTorch做實驗時經常會用到生成隨機數Tensor的方法,比如: torch.rand() torch.randn() torch.normal() torch.linespace() 均勻分佈 *torch.rand(sizes, out=None) → Tensor

pytorch框架網路引數儲存和過載torch.save,torch.load,Unet

首先,定義NET,然後訓練,然後儲存: import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot as plt import numpy as n

Pytorch 之修改Tensor部分值

一:背景引入 對於一張圖片,怎樣修改區域性畫素值? 二:利用Tensor方法 比如輸入全零tensor,可認為為黑色圖片 >>> n=torch.FloatTensor(3,3,4).fill_(0) >>> n

Pytorch RuntimeError: CUDNN_STATUS_INTERNAL_ERROR的解決辦法

先說一下我碰到這個問題的平臺環境:作業系統是CentOS,多個GPU節點,cuda 9.0。執行pytorch和tensorflow都會提示CUDNN_STATUS_INTERNAL_ERROR錯誤。 對於此問題,解決辦法有: 1、刪除掉nvidia快取,或者還需要重啟。

pytorch編譯/pytorch/torch/lib/THD/base/data_channels/DataChannelNccl.cpp:31:17: error: ‘ncclInt8’ was not declared in this scope

在https://github.com/pytorch/pytorch/issues/13962頁面下有我的同名回答(mtxing69) /pytorch/torch/lib/THD/base/data_channels/DataChannelNccl.cpp:31:17: error: ‘ncclInt8

Pytorch RuntimeError: should contain 1 elements not 64/ValueError: expected 4D input (got 2D input)

在執行pytorh的過程中一次產生了如題兩個錯誤,錯誤來自於nn.BatchNorm2d(N),其中N=channels 然而輸入必須是一個四維Tensor,在我的程式中輸入Tensor是一個1*47的向量,一個batchsize=100,所以起初的輸入是一個100*47的

【小白學PyTorch】9 tensor資料結構與儲存結構

文章來自微信公眾號【機器學習煉丹術】。 上一節課,講解了MNIST影象分類的一個小實戰,現在我們繼續深入學習一下pytorch的一些有的沒的的小知識來作為只是儲備。 參考目錄: @[toc] ## 1 pytorch資料結構 ### 1.1 預設整數與浮點數 **【pytorch預設的整數是int64】*

[PyTorch小試牛刀]實戰一·使用PyTorch擬合曲線(對比PyTorch與TensorFlow實現的區別)

[PyTorch小試牛刀]實戰一·使用PyTorch擬合曲線 在深度學習入門的部落格中,我們用TensorFlow進行了擬合曲線,到達了不錯的效果。 我們現在使用PyTorch進行相同的曲線擬合,進而來比較一下TensorFlow與PyTorch的異同。 搭建神經網路進行訓練的步驟基本相

PyTorch 1.0 釋出,JIT、全新的分散式庫、C++ 前端

   Python 張量與動態神經網路 PyTorch 1.0 釋出了。 此版本的主要亮點包括JIT 編譯、全新並且更快的分散式庫與 C++ 前端等。 JIT 編譯器 JIT(Just-In-Time)是一組編譯工具,用於彌合 PyTorch 研究與生產之間的差距。 它允許建

pytorch低版本載入高版本pytorch訓練得到的模型,出現‘module’ object has no attribute ‘_rebuild_tensor_v2’錯誤

情景 使用pytorch0.3來載入Mobilenetv1的模型(用更高版本的pytorch訓練得到的),出現“AttributeError: ‘module’ object has no attrib

PyTorch 60 分鐘入門教程:PyTorch 深度學習官方入門中文教程

什麼是 PyTorch? PyTorch 是一個基於 Python 的科學計算包,主要定位兩類人群: NumPy 的替代品,可以利用 GPU 的效能進行計算。 深度學習研究平臺擁有足夠的靈活性和速度 開始學習 Tensors (張量)

pytorch原始碼賞析】Dataset in pytorch

1. 原始碼概覽 pytorch是眾多dl工具中,比較python風格化的一種,另一個完全python化的dl工具是chainer,它的構建語言中只有python,甚至cuda也是從python端呼叫的。python風格化的好處是,使用了很多python的語言

Pytorch Tutorial (1) -- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ

官方網頁:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html#deep-learning-with-pytorch-a-60-minute-blitz 一、安裝torchvision conda

Pytorch Tutorial (1) -- DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ - Markdown版本

Deep Learning with PyTorch: A 60 Minute Blitz 0.基礎準備 1.安裝torchvision 2.更新了一堆,以下是torchvision文件 1.What is PyTorch?

[ Pytorch ] ——安裝:使用Anaconda安裝Pytorch

1、新增清華源,然後使用conda進行安裝。(注:0.3.1 及以後) ### for 0.4.0 and later conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda

Pytorch遷移學習小技巧 以及 Pytorch小技巧的一些總結

遷移學習技巧 內容概要: 遷移學習的概念 Pytorch預訓練模型以及修改 不同修改預訓練模型方式的情況 一些例子:只針對dense layer的重新訓練 ,凍結初始層的權重重新訓練 遷移學習的概念 神經網路需要用資料來訓練,它從資料中獲得資