我试图构建一个简单的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!")从这段代码中,我总是得到不正确的输出大小,有人能给我一个提示吗,我如何才能得到正确的输出大小?
发布于 2022-05-05 19:55:39
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轻松地完成所有这些操作,而不需要指定这样的权重和偏差。
https://stackoverflow.com/questions/72130884
复制相似问题