Python 如何在PyTorch中使用矩阵运算计算正向传递?

Python 如何在PyTorch中使用矩阵运算计算正向传递?,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,我有一个输入x,第1层权重矩阵和第2层权重矩阵 现在我想通过手动计算这个预先训练好的神经网络的输出: x*权重1*权重2 在执行此操作时,我收到一个运行时错误:张量a(6)的大小必须与张量b(4)在非单态维度1的大小相匹配 class Net(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(4,6) self.fc2 = nn.Linear(6,2) self.fc3

我有一个输入x,第1层权重矩阵和第2层权重矩阵

现在我想通过手动计算这个预先训练好的神经网络的输出:

x*权重1*权重2

在执行此操作时,我收到一个运行时错误:张量a(6)的大小必须与张量b(4)在非单态维度1的大小相匹配

class Net(nn.Module):

def __init__(self):
    super().__init__()
    self.fc1 = nn.Linear(4,6)
    self.fc2 = nn.Linear(6,2)
    self.fc3 = nn.Linear(2,1)

def forward(self, x):
    x = F.relu(self.fc1(x))
    x = F.relu(self.fc2(x))
    x = F.relu(self.fc3(x))
    return x

net = Net()
X = torch.randn(1000,4)
net.fc2.weight*(net.fc1.weight * X[0])

将元素乘法(
*
运算符)与矩阵乘法(
@
运算符)混淆。
尝试:

net.fc2.weight@(net.fc1.weight@X[0])

您将元素乘法(
*
运算符)与矩阵乘法(
@
运算符)混淆了。
尝试:

net.fc2.weight@(net.fc1.weight@X[0])

将批次维度添加到输入中。有关更多信息,请参阅将批次维度添加到输入。有关更多信息,请参阅