正如标题所说,如果我将我的pytorch神经网络中的隐藏层数更改为与输入 node 数不同的任何值,它将返回以下错误.
运行时错误:mat1和mat2形状不能相乘(380x10和2x10)
我认为体系 struct 编码错误,但我对pytorch和神经网络相对较新,因此我找不到错误.任何帮助都是非常感谢的,我已经包括了下面的代码
class FCN(nn.Module):
def __init__(self, N_INPUT, N_OUTPUT, N_HIDDEN, N_LAYERS):
super().__init__()
activation = nn.Tanh
self.fcs = nn.Sequential(*[
nn.Linear(N_INPUT, N_HIDDEN),
activation()])
self.fch = nn.Sequential(*[
nn.Sequential(*[
nn.Linear(N_INPUT, N_HIDDEN),
activation()]) for _ in range(N_LAYERS-1)])
self.fce = nn.Linear(N_INPUT, N_HIDDEN)
def forward(self, x):
x = self.fcs(x)
x = self.fch(x)
x = self.fce(x)
return x
torch.manual_seed(123)
pinn = FCN(2, 2, 10, 8)
如果将Pinn体系 struct 定义为pinn = FCN(2, 2, 2, 8)
,则不会返回错误,但神经网络的性能不佳.
其他信息:
- 输入是批量大小为380的矩阵张量
如果您需要更多的信息,请让我知道,谢谢!