使用 Pytorch 构建 2 层神经网络

Building 2 layer neural network with Pytorch

我正在尝试构建一个简单的2层网络,它有2个输入和1个输出,代码如下:

num_input = 2
num_output = 1

# Input
x1 = torch.rand(1, 2)

# Weights
W1 = torch.rand(2,3)
W2 = torch.rand(3,1)

# biases
b1 = torch.rand(1,3)
b2 = torch.rand(1,1)

# Activation function
def f(inp):
    inp[inp >= 0] = 1
    inp[inp < 0] = 0
    return inp

# Predict output
out = f(torch.mm(x1, W1) + b1)
y=W2*out +b2
print(y)

# Check solution
assert list(y.size()) == [1, num_output], f"Incorrect output size ({y.size()})"
print("nice!")

从这段代码我总是得到不正确的输出大小,任何人都可以给我提示,我怎样才能得到正确的输出大小?

y=out@W2 +b2

你在做逐元素乘法。这并没有按照您的需要更改输出的大小。

明确一点 python 3.5 及更高版本可以使用此“@”语法 - 与 torch.mm() 做同样的事情 - 即矩阵乘法。

维度:(现在)

现在您有 (1,2) 输入乘以 (2,3) 权重并添加 (1,3) 偏差。形状是 (1,3) 然后你用 (1,3)(3,1) 矩阵乘法输出是 (1,1) 并偏向它使最终输出大小 (1,1).

尺寸(之前)

旁注:

您还可以使用 nn.Linear 轻松完成所有这些操作,而无需像那样指定权重和偏差。