我有以下用于pytorch的代码
import torch.nn.functional as F
class Network(nn.Module):
def __init__(self):
super().__init__()
self.hidden = nn.Linear(784, 256)
self.output = nn.Linear(256, 10)
def forward(self, x):
x = F.sigmoid(self.hidden(x))
x = F.softmax(self.output(x), dim=1)
return x
我的问题:这是什么self.hidden
?
它从nn.Linear
返回。并且可以将x
作为参数。 self.hidden
的功能到底是什么?
谢谢
答案 0 :(得分:1)
pytorch中nn.Linear的类定义是什么?
CLASS torch.nn.Linear(in_features, out_features, bias=True)
对输入数据进行线性变换: y = xW ^ T + b
参数:
请注意,线性方程中的权重W(形状(out_features,in_features))和偏差b(形状(out_features))是随机初始化的,以后可以更改(例如在训练网络时)。
让我们看一个具体的例子:
import torch
from torch import nn
m = nn.Linear(2, 1)
input = torch.tensor([[1.0, -1.0]])
output = m(input)
参数是随机初始化的
>>> m.weight
tensor([[0.2683, 0.2599]])
>>> m.bias
tensor([0.6741])
输出计算为1.0 * 0.2683 - 1.0 * 0.2599 + 0.6741 = 0.6825
>>> print(output)
tensor([[0.6825]]
在您的网络中,共有三层:输入层有784个节点,一个隐藏层有256个节点,输出层有10个节点。
答案 1 :(得分:0)
Network
定义为具有两层,即隐藏层和输出层。
粗略地说,隐藏层的功能是保存在训练过程中可以优化的参数。