首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用火炬构建2层神经网络

用火炬构建2层神经网络
EN

Stack Overflow用户
提问于 2022-05-05 16:50:37
回答 1查看 153关注 0票数 0

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

代码语言:javascript
复制
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!")

从这段代码中,我总是得到不正确的输出大小,有人能给我一个提示吗,我如何才能得到正确的输出大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-05 19:55:39

代码语言:javascript
复制
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轻松地完成所有这些操作,而不需要指定这样的权重和偏差。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72130884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档