pytorch中nn.Linear的类定义是什么

时间:2019-02-27 23:32:25

标签: python function class pytorch

我有以下用于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的功能到底是什么?

谢谢

2 个答案:

答案 0 :(得分:1)

  

pytorch中nn.Linear的类定义是什么?

来自documentation


CLASS torch.nn.Linear(in_features, out_features, bias=True)

对输入数据进行线性变换: y = xW ^ T + b

参数:

  • in_features –每个输入样本的大小
  • out_features –每个输出样本的大小
  • 偏差-如果设置为False,则图层将不会学习加法偏差。默认值:True

请注意,线性方程中的权重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定义为具有两层,即隐藏层和输出层。 粗略地说,隐藏层的功能是保存在训练过程中可以优化的参数。