TensorDataSet“张量之间的大小不匹配”

问题描述 投票:0回答:1

我有 4 个大小为 64x64 的矩阵,它们被堆叠起来 (Torch.Stack) 以创建大小为 [4,64,64] 的矩阵,它们将作为我的 TensorDataSet 的输入。我有 1 个 64x64 矩阵,旨在为我的 TensorDataSet 输出。当我将它们加载到 TensorDataSet(输入,输出)时,我发现大小不匹配。

如果我采用 1 个输入和 1 个输出,每个输入和输出的大小均为 64x64,TensorDataSet 将接受这一点。但是,我想传递与 1 个输出值相对应的 4 个输入值。例如,每个输入的 [0,0] 位置中的第一个值与输出的 [0,0] 位置有关系。

我尝试使用挤压方法,但没有成功。

python pytorch conv-neural-network artificial-intelligence
1个回答
0
投票

如果仔细查看

TensorDataset
引发的错误的堆栈跟踪,您将看到:

assert all(tensors[0].size(0) == tensor.size(0) for tensor in tensors)

这意味着所有张量沿第一维(数据集大小)必须具有相同的大小。

在您的情况下, one

4x64x64
张量对应于 one 64x64 张量,换句话说,TensorDataset 的输入必须分别针对输入和输出进行整形
(1,4,64,64)
(1,64,64)
。因此,您需要在两者上添加额外的维度(使用
None
索引
unsqueeze
):

x = torch.rand(4,64,64)
y = torch.rand(64,64)

dataset = TensorDataset(x[None], y[None])
© www.soinside.com 2019 - 2024. All rights reserved.