-1

很抱歉,这可能是一个之前已经回答过的简单问题,但我找不到答案。我正在尝试使用 CNN 来提取特征,然后将其输入到输出 2 个变量的 FC 网络中。我正在尝试使用功能线性层作为动态处理扁平化特征的一种方式。是self.cnn一个顺序容器,最后一层是nn.Flatten(). 当我在 CNN 之后打印 x 的大小时,我看到它是 15x152064,所以我不清楚为什么该F.linear层无法运行并出现以下错误。任何帮助,将不胜感激。

RuntimeError: 大小不匹配,得到 15, 15x152064,2

x = self.cnn(x)
batch_size, channels = x.size()
x = F.linear(x, torch.Tensor([256,channels]))
y_hat = self.FC(x)
4

1 回答 1

1

torch.Tensor([256, channels])不会创建大小的张量,(256, channels)而是创建包含值 256 的一维张量,channels而是。我不知道你想如何初始化你的权重,但有几个选项:

# Identity transform:
x = F.linear(x, torch.ones(256,channels))
# Random transform :
x = F.linear(x, torch.randn(256,channels))
于 2021-03-31T16:01:40.323 回答