解决问题:ValueError: (InvalidArgument) The 2-th dimension of input[0] and input[1] is expected to be equ

一、问题

修改深度学习网络后,在进行张量拼接时提示错误:ValueError: (InvalidArgument) The 2-th dimension of input[0] and input[1] is expected to be equal.But received input[0]'s shape = [1, 64, 45, 60], input[1]'s shape = [1, 64, 44, 60].
[Hint: Expected inputs_dims[0][j] == inputs_dims[i][j], but received inputs_dims[0][j]:45 != inputs_dims[i][j]:44.] (at …\paddle/phi/kernels/funcs/concat_funcs.h:83)

在这里插入图片描述

二、问题分析

从错误信息来看,问题出在 paddle.concat 操作上。试图在维度 1 上连接两个张量,但它们在维度 2 上的大小不一致。这意味着输入的张量 L2_offset 和 L3_offset * 2 在高度上(第二个维度)有不同的大小,分别是 45 和 44。

三、解决办法

确保输入尺寸一致:在 paddle.concat 之前确保输入张量在所有非连接维度上具有相同的大小。

调整输入张量:根据需求,调整张量的大小使它们一致。

3.1 添加代码

下面代码解析:

裁剪或填充:在连接之前,确保两个张量在所有非连接维度上的大小相同。如果一个张量在某个维度上比另一个张量大,则裁剪到较小的大小。

连接操作:一旦两个张量具有相同的大小,就可以安全地使用 paddle.concat 进行连接。

import paddle

# 获取当前的高度和宽度
height_L2, width_L2 = L2_offset.shape[2], L2_offset.shape[3]
height_L3, width_L3 = L3_offset.shape[2], L3_offset.shape[3]

# 确保两个张量在高度和宽度上相同,可以裁剪或填充
if height_L2 > height_L3:
    L2_offset = L2_offset[:, :, :height_L3, :]
elif height_L2 < height_L3:
    L3_offset = L3_offset[:, :, :height_L2, :]

# 连接两个张量
L2_offset = paddle.concat([L2_offset, L3_offset * 2], axis=1)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉研坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值