pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...

这篇具有很好参考价值的文章主要介绍了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"(批次、通道、高度、宽度)格式

异常报错

RuntimeError: Given groups=1, weight of size [16, 3, 2, 3], 
expected input[8, 65, 66, 3] to have 3 channels, 
but got 65 channels instead

异常截图

pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...,异常,nn.Conv2d卷积异常,pytorch

异常代码

def down_shifted_conv2d(x , num_filters , filters_size = [2,3],stride = 1, **kwargs):
    batch_size,H,W,channels = x.shape

    padding = (0,0,
        int(((filters_size[1]) - 1) / 2 ) , int((int(filters_size[1]) - 1) / 2),
        int(filters_size[0]) - 1 , 0,
        0,0)
    x_paded = nn.functional.pad(x, padding)
    print(x_paded.shape)
    conv_layer = nn.Conv2d(in_channels=channels, out_channels=num_filters, 
                           kernel_size=filters_size,
                           stride=stride, **kwargs)
    
    return conv_layer(x_paded)
# Example usage
x = torch.randn(8, 64, 64, 3)  # Example input with batch size 8, height and width 64, and 3 channels
num_filters = 16
output = down_shifted_conv2d(x, num_filters)
print(output.shape)

原因解释

  • 在pytorch中,“nn.Conv2d”需要输入的张量格式为(batch_size,channels,height,width),原图输入的x的格式是(batch_size,height ,weight,channel)所以需要对tensor进行转置。

  • 矩阵交换维度的函数permute,按照编号,将新的顺序填好即可文章来源地址https://www.toymoban.com/news/detail-691859.html

def down_shifted_conv2d(x , num_filters , filters_size = [2,3], stride = 1, **kwargs):
    batch_size, H, W, channels = x.shape
    
    # Transpose the input tensor to (batch_size, channels, height, width)
    x = x.permute(0, 3, 1, 2)
    
    # Padding
    padding = (int((filters_size[1] - 1) / 2), int((filters_size[1] - 1) / 2),
               filters_size[0] - 1, 0)
    
    x_paded = F.pad(x, padding)

修正代码

def down_shifted_conv2d(x , num_filters , filters_size = [2,3],stride = 1, **kwargs):
    batch_size,H,W,channels = x.shape
    # 按照顺序对4个维度分别进行填充
    padding = (0,0,
        int(((filters_size[1]) - 1) / 2 ) , int((int(filters_size[1]) - 1) / 2),
        int(filters_size[0]) - 1 , 0,
        0,0)
    x_paded = nn.functional.pad(x, padding)
    x_paded = x_paded.permute(0,3,1,2)
    # 进行卷积
    conv_layer = nn.Conv2d(in_channels=channels, out_channels=num_filters, 
                           kernel_size=filters_size,
                           stride=stride, **kwargs)
    
    return conv_layer(x_paded)
# Example usage
x = torch.randn(8, 64, 64, 3)  
num_filters = 16
output = down_shifted_conv2d(x, num_filters)
print(output.shape)

执行结果

到了这里,关于pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Pytorch中报错RuntimeError: The size of tensor a (60) must match the size of tensor b (56)

    最近在学习YOLOV5的时候,刚开始遇到了如下的问题: 这可能是因为5.0的工程下载了个6.1的模型,所以不匹配 yolov5s.pt [https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt] 下载下来替换掉工程文件夹里的yolov5s.pt文件 发现下面这个问题直接消失了! 顺利完成 如果对你有用麻

    2024年02月01日
    浏览(43)
  • RuntimeError: stack expects each tensor to be equal size ??

    RuntimeError: stack expects each tensor to be equal size, but got [1200, 1200, 3] at entry 0 and [1200, 1344, 3] at entry 1 pytorch 数据处理错误, 网上的各种方法都试过了 1: 检查过数据的输入通道是3, 标签是1,但是输入的大小尺寸不同 2: 进行如下方法也不行!! :3: bs=1,不报错,bs1 报错 4: bug 未解

    2024年02月01日
    浏览(34)
  • 【报错处理】RuntimeError: input.size(-1) must be equal to input_size. Expected 5, got 21

    1、 原因 : 使用view时维度指定错误,LSTM(input,(h0,c0)) 指定batch_first=True​后,input就是(batch_size,seq_len,input_size)否则为input(seq_len, batch, input_size) 2、原因:并不是rnn的错误,而是因为下一函数的输入和这一层输出维度不一样,对照维度信息和尺寸信息修改即可。 推荐报错解决方

    2024年02月16日
    浏览(43)
  • RuntimeError: stack expects each tensor to be equal size, but got at entry

    参考链接:​​​​​​解决Pytorch dataloader时报错每个tensor维度不一样的问题_python_脚本之家 记录一下自己遇到的bug: 问题描述:  问题分析: torch.stack(batch, 0, out=out)出错,原因可能是: 同一个batch的数据图片的维度(H, W, C)要相同(可以见官方文档:其shape必须一致) 问

    2024年02月15日
    浏览(52)
  • DataLoader问题解决:RuntimeError: stack expects each tensor to be equal size, but got [3, 200, 200]entry1

            最近,在数据集处理并载入DataLoader进行训练的时候出现了问题:         我看了一下,大意就是维度也就是通道数不匹配,所以我觉得应该是数据集图片出现了问题。以下是我的普通数据集处理代码:           我一张一张图片放入DataLoader,然后按顺序一张一张的

    2023年04月25日
    浏览(43)
  • RuntimeError: shape ‘[-1, 784]‘ is invalid for input of size 68076

    在应用torch进行测试时,有可能出现这种错误: RuntimeError: shape \\\'[-1, 784]\\\' is invalid for input of size 68076 这个错误通常是由于输入数据的大小与模型期望的输入大小不匹配导致的。具体地说,在这个错误信息中, [-1, 784] 表示输入张量的形状是一个二维张量,第一个维度大小是 -1,

    2024年02月12日
    浏览(43)
  • 【解决问题】RuntimeError: The size of tensor a (80) must match the size of tensor b (56) at non-singleton

    你可以去github上,这儿我用的是YOLOv5.5的版本,就去Tags6里面的model/common.py里面去找到这个SPPF的类,把它拷过来到你这个Tags5的model/common.py里面,这样你的代码就也有这个类了,还要引入一个warnings包就行了 点开common.py文件 将这个复制到对应的类就行了。 刚解决了上一个问题,结

    2024年02月16日
    浏览(39)
  • 【已解决】Pytorch RuntimeError: expected scalar type Double but found Float

    本文作者: slience_me 在训练模型时候,将数据集输入到网络中去,在执行卷积nn.conv1d()的时候,报出此错误 报错堆栈信息 tensor的数据类型dtype不正确 这个错误通常是由于数据类型不匹配导致的。在PyTorch中,张量有不同的数据类型,如float32(FloatTensor)和float64(DoubleTensor)等

    2024年01月15日
    浏览(47)
  • 生成器报错,RuntimeError: Sizes of tensors must match except in dimension

    RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 2 but got size 3 for tensor number 1 in the list. 常见的模型报错,比方说pix2pix模型 In[18], line 84, in Generator.forward(self, x)         82 bottleneck = self.bottleneck(d7)         83 up1 = self.up1(bottleneck) --- 84 up2 = self.up2(torch.cat([up1, d

    2024年02月09日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包