解决pytorch 数据类型报错的问题

pytorch报错:

RuntimeError: Expected object of type Variable[torch.LongTensor] but found type Variable[torch.cuda.ByteTensor] for argument #1 ‘argument1'

解决方法:

pytorch框架在存储labels时,采用LongTensor来存储,所以在一开始dataset返回label时,就要返回与LongTensor对应的数据类型,即numpy.int64

补充:使用pytorch遇到的各种问题及解决方案

自己在使用pytorch遇到的各种问题及解决方案:

RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'

RuntimeError: The size of tensor a (12800) must match the size of tensor b (100) at non-singleton dimension 0

输入维度为12800,输出维度为100,输入输出的维度不一致,正确的例子如下:

inputs = [(1,2,3), (2,3,4)]
outsputs = [4, 5]

将输入输出的长度改为一致

取tensor的第一个元素

XXX.item() # XXX为tensor对象

tensor中的元素改变数据类型

# 常常因为数据类型出错,要修改数据类型
XXX.int()
XXX.float()

补充:Pytorch的Dataloader报错:TypeError: batch must contain tensors, numbers, dicts or lists

具体报错:

TypeError: batch must contain tensors, numbers, dicts or lists; found <class 'PIL.Image.Image'>

loader的代码:

dataloader=torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=True)

表面上看这个代码没有问题,实际上问题出在了dataloader机制的要求上,dataloader要求接收的是一个tensor,而我的dataset没有做transform,所以dataset的getitem函数返回的是一个PIL的Image对象,所以就会报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • pytorch中tensor张量数据类型的转化方式

    1.tensor张量与numpy相互转换 tensor ----->numpy import torch a=torch.ones([2,5]) tensor([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]]) # ********************************** b=a.numpy() array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]], dtype=float32) numpy --

  • PyTorch中Tensor的数据类型和运算的使用

    在使用Tensor时,我们首先要掌握如何使用Tensor来定义不同数据类型的变量.Tensor时张量的英文,表示多维矩阵,和numpy对应,PyTorch中的Tensor可以和numpy的ndarray相互转换,唯一不同的是PyTorch可以在GPU上运行,而numpy的ndarray只能在cpu上运行. 常用的不同数据类型的Tensor,有32位的浮点型torch.FloatTensor,   64位浮点型 torch.DoubleTensor,   16位整形torch.ShortTenso

  • pytorch使用 to 进行类型转换方式

    在程序中,有多种方法进行强制类型转换. 本博文将介绍一个非常常用的方法:to()方法. 我们通常使用它来进行GPU和CPU的类型转换,但其实也可以用来进行torch的dtype转换. 常见方法:tensor.to('cuda:0') 先看官网介绍: **Performs Tensor dtype and/or device conversion. A torch.dtype and torch.device are inferred from the arguments of self.to(*

  • 解决pytorch 数据类型报错的问题

    pytorch报错: RuntimeError: Expected object of type Variable[torch.LongTensor] but found type Variable[torch.cuda.ByteTensor] for argument #1 'argument1' 解决方法: pytorch框架在存储labels时,采用LongTensor来存储,所以在一开始dataset返回label时,就要返回与LongTensor对应的数据类型,即numpy.int64

  • pytorch masked_fill报错的解决

    如下所示: import torch.nn.functional as F import numpy as np a = torch.Tensor([1,2,3,4]) a = a.masked_fill(mask = torch.ByteTensor([1,1,0,0]), value=-np.inf) print(a) b = F.softmax(a) print(b) tensor([-inf, -inf, 3., 4.]) d:/pycharmdaima/star-transformer

  • 解决mybatisplus插入报错argument type mismatch的问题

    今天使用argument type mismatch发现插入的时候报错 java.lang.IllegalArgumentException: argument type mismatch 从错误中看是参数的问题,想到我再实体类里面定义了几个在数据库中没有的字段,就使用了 @TableField(exist = false) 来排除掉这个字段. 再跑发现还是这个错误,后来看了下主键的@TableId默认的type是IdType.NONE,想想我们应该用自增的id就手动增加了一个 @TableId

  • 解决Maven 项目报错 java.httpservlet和synchronized使用方法

    使用java8 的lanmbe表达式时,使用java1.8编译,则会报错 需要在pom.xml的<bulid></build>中添加 <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</versi

  • ECSHOP完美解决Deprecated: preg_replace()报错的问题

    随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误.PHP发展到PHP5.5版本以后,有了很多细微的变化.而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出.说了半天,这个新错误到底是什么呢,它的完整错误提示信息是这样的: Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in....... 注意:不是所有人的ECS

  • 解决Unixbench安装报错信息的问题

    运行环境: Ubuntu 16.04.3 x86_64 在Ubuntu下安装运行Unixbench时,提示报错信息如下 gcc -o ./pgms/ubgears -DTIME -Wall -pedantic -ansi -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall ./src/ubgears.c -lGL -lXext -lX11 /usr/bin/ld: /tmp/ccnTgDEZ.o: undefined reference

  • 解决vue项目报错webpackJsonp is not defined问题

    在vue单页面应用中,我们大概都会使用CommonsChunkPlugin这个插件. 传送门 CommonsChunkPlugin 但是在项目经过本地测试没有任何问题,打包上线后却会报错 webpackJsonp is not defined.这是因为公共文件必须在自己引用的js文件之前引用. 可以手动改文件引用,但是推荐以下解决办法: 找到build→webpack.prod.conf.js→找到HtmlWebpackPlugin插件,添加如下配置即可 chunks: ['manifest',

  • 解决yum安装报错Protected multilib versions的问题

    今天在云服务器上装nginx,需要先安装一些依赖库比如zlib,但是安装zlib时候报错. yum install -y zlib zlib-devel (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multilib versions: zlib-1.2.7-17.el7.x86_64 != zlib-1.2.7-15.el7.i686 原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上 --setopt=protected_multili

  • 解决pytorch-yolov3 train 报错的问题

    UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead https://github.com/eriklindernoren/PyTorch-YOLOv3/blob/master/models.py#L191 将model.py  obj_mask转为int8 bool obj_mask=obj_mask.bool() # convert int8

  • 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for assembly dependencies. Please install PyWin32 or pywin32-ctypes. pip install pypiwin32 但是运行pip install pypiwin32时却提示两个库都已经安装过了 可是当再运行打包脚本时就是死活无法打包,就是提示缺少

随机推荐