RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the

这篇具有很好参考价值的文章主要介绍了RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

mobilenetv3在残差块中加入了注意力机制 用GPU 进行训练时报的错

解决方法1:

1,不用GPU 用CPU 就可以 CUDA 设置为False,确实可以解决,但是不用GPU 好像意义不大

解决方法2 :

用仍然用GPU ,看下面的的解决方案:

报错的原因:2

1,我直接在倒残差块的前向传播内对导入的注意力模块进行了实例化然后直接调用

错误范例

runtimeerror: input type (torch.cuda.floattensor) and weight type (torch.flo,python,深度学习,人工智能

2,错误分析:参照这个链接得到启发原文链接:https://blog.csdn.net/qq_42902997/article/details/122594017

这个时候就会报错,而报错的原因,就是因为 torch 的流程是这样的:
首先将所有的模型加载,先从 主干网络 开始,进入主干网络的  init 中把所有的内容加载,然后,通过 main 函数中的 to(cuda) 操作,就把加载的所有内容和网络定义都放到 cuda 上了,但是注意!!
第二步开始训练,训练的过程中,都是通过 forward 函数来调用的,但是这个时候程序发现,当进入 主干的 forward 中运行的时候,出现了几个 注意力模块 的网络层,但是注意:这些 注意力模块中定义的网络层,在网络加载的过程中可是没有出现在 主干网络 的 __init__里面,也就理所当然地没有加载到 cuda上,因此在 主干网络 的 forward 中出现的时候,注意力模块的这几个网络层的 weight 依然在 cpu 上,这就导致了错误。

正确的解决方法

1,首先在_inti_里对导入的模块进行实例化,对于混合注意力机制可能不同阶段需要传入不同的通道参数和卷积核大小参数,这个时候应该用下图的方式分别对每类参数进行实例化定义,这个时候注意力模块就会和整个主干一起初始化,然后再一起传入到cuda上。就不会出现网络模型或者数据一部分在GPU一部分在CPU上了。
runtimeerror: input type (torch.cuda.floattensor) and weight type (torch.flo,python,深度学习,人工智能

 2,初始化定义好之后,就可以在forward里面调用了,调用范例

runtimeerror: input type (torch.cuda.floattensor) and weight type (torch.flo,python,深度学习,人工智能

这样就不会报错了文章来源地址https://www.toymoban.com/news/detail-562166.html

到了这里,关于RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RuntimeError: FlashAttention is only supported on CUDA 11 and above

    RuntimeError: FlashAttention is only supported on CUDA 11 and above 此错误的原因可能是 nvcc 的 CUDA 版本(通过键入“nvcc -V”获得,可能 11.0)与 torch (11.7) 的 CUDA 版本不匹配。 类似问题在这里解决: https://stackoverflow.com/questions/40517083/multiple-cuda-versions-on-machine-nvcc-v-confusion 我解决了这个问题通

    2024年02月07日
    浏览(32)
  • RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is Fal

    今天在跑 yolov7 的时候遇见,模型加载问题,因为我是使用CPU来加载 pt 模型的,但是出现了错误; RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device(\\\'cpu\\\') to map your storages to

    2024年02月11日
    浏览(43)
  • RuntimeError: CUDA out of memory See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

    报错: If reserved memory is allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF 当reserved memory is allocated memory,进行如下设置,可解决此bug: 代码如下:

    2024年02月11日
    浏览(42)
  • Pytorch数据类型转换(torch.tensor,torch.FloatTensor)

    之前遇到转为tensor转化为浮点型的问题,今天整理下,我只讲几个我常用的,如果有更好的方法,欢迎补充 1.首先讲下torch.tensor,默认整型数据类型为torch.int64,浮点型为torch.float32 2.这是我认为平常最爱用的转数据类型的方法,可以用dtype去定义数据类型 1.这个函数不要乱用

    2024年02月11日
    浏览(37)
  • TypeError: ufunc ‘bitwise_and‘ not supported for the input types, and the inputs could not be safely

    这个错误是因为您使用了逻辑运算符来执行按位与(bitwise and)运算,而它不适用于浮点数类型的输入数据。 要比较两个浮点数是否在一个范围内,您可以使用逻辑运算符and,或者使用numpy库中的logical_and函数。具体地,您可以按照以下方式更改代码: 1.使用逻辑运算符and来替代

    2024年02月14日
    浏览(36)
  • pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...

    nn.Conv2d 需要的输入张量格式为 (batch_size, channels, height, width),但您的示例输入张量 x 是 (batch_size, height, width, channels)。因此,需要对输入张量进行转置。 注意, TensorFlow使用\\\"NHWC\\\"(批次、高度、宽度、通道)格式,而PyTorch使用\\\"NCHW\\\"(批次、通道、高度、宽度)格式 在pytorch中

    2024年02月10日
    浏览(45)
  • Pytorch:TypeError: pic should be PIL Image or ndarray. Got <class ‘torch.Tensor‘>

    关键代码 原因 在于 x 本就是 Tensor 类型的,有写了一次ToTensor()转换类型,因此会报错。 解决办法 删除 transforms.ToTensor() 或者 修改x 类型为其他类型

    2024年02月15日
    浏览(45)
  • RuntimeError: No CUDA GPUs are available

    在之前运行代码时正常没有任何问题,但是后面莫名其妙突然报错:RuntimeError: No CUDA GPUs are available 一开始还有这个:No CUDA runtime is found, using CUDA_HOME=\\\'/usr/local/cuda\\\' 这里主要有几个考虑的方面: 1、用于运行代码的GPU号设置问题 如果你的代码里面有下面这句话 (1)如果使用的

    2024年02月16日
    浏览(31)
  • Given groups=1, weight of size [256, 256, 3, 3], expected input[4, 512, 64, 64] to have 256 channels

    【问题解决】 这个应该是很常见的问题了。直接翻译过来就是:在给定组=1,大小权重[256,256,3,3],预期输入[4,512,64,64]具有256个通道,但得到了512个通道。直白点说就是第2位置的参数没设置对应上,要么第二个都是256,要么第二个都是512。 Given groups=1, weight of size [

    2024年02月12日
    浏览(71)
  • 解决RuntimeError:No CUDA GPUs are available

    解决RuntimeError:No CUDA GPUs are available 如果本来显卡是能用的 版本这些也能对的上。 基本解决方法为 在使用之前检查cuda是否可用 不检测默认不可用。 或者在文件头加入import torch torch.cuda.current_device() torch.cuda._initialized = True // 检测一下cuda是否可用 print(torch.cuda.is_available()) F

    2024年02月03日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包