You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorDataSet出现size mismatch between tensors错误,多输入对应单输出求助

解决TensorDataset输入输出尺寸不匹配问题

问题根源在于TensorDataset要求输入和输出的第一维度(样本数)必须完全一致。你当前的输入形状是[4,64,64],输出是[64,64],第一维度分别为4和64,自然会触发尺寸不匹配错误。

根据你的需求——每个输入的同位置值对应输出的同位置值,正确的做法是把每个空间位置(共64×64个)当作一个独立样本,调整张量形状让样本数对齐:

具体步骤

  • 调整输入张量:将[4,64,64]转换为[64×64,4],把4个输入矩阵的同位置值作为单个样本的特征。
  • 调整输出张量:将[64,64]展平为[64×64](或[64×64,1]),每个位置的值作为对应样本的标签。

代码示例

import torch
from torch.utils.data import TensorDataset

# 模拟你的输入输出
inputs = torch.randn(4, 64, 64)  # 4个64x64输入矩阵
outputs = torch.randn(64, 64)    # 1个64x64输出矩阵

# 重排并重塑输入:把通道维度移到最后,再展平空间维度
inputs_reshaped = inputs.permute(1, 2, 0).reshape(-1, 4)
# 展平输出为一维张量
outputs_reshaped = outputs.reshape(-1)

# 现在可以正常创建TensorDataset
dataset = TensorDataset(inputs_reshaped, outputs_reshaped)

# 验证形状:输入样本数=输出样本数=64*64=4096
print(inputs_reshaped.shape)  # torch.Size([4096, 4])
print(outputs_reshaped.shape) # torch.Size([4096])

逻辑说明

这样调整后,每个样本对应4个输入矩阵的(i,j)位置值,以及输出矩阵的(i,j)位置值,完全符合你想要的“4个输入对应1个输出位置关联”的需求,同时满足TensorDataset对样本数一致的要求。

内容的提问来源于stack exchange,提问作者PytorchLearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:42:21