购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-3 神经层

神经层是神经网络的主要成员,PyTorch有各种各样的神经层,详情可参阅官网 [12] ,如下列举了一些比较常见的类别,随着算法的发明,还会不断地增加,也可以自定义神经层(Custom layer)。

· 完全连接层(Linear Layers);

· 卷积神经层(Convolution Layers);

· 池化神经层(Pooling Layers);

· 常态化神经层(Normalization Layers);

· 循环神经层(Recurrent Layers);

· Transformer Layers;

· Dropout Layers。

由于中文翻译大部分都不贴切原意,建议读者尽可能使用英文术语。

4-3-1 完全连接层

完全连接层(Linear)是最常见的神经层,上一层每个输出的神经元( y )都会完全连接到下一层的每个输入的神经元( x ),即 y = wx + b 。语法如下:

torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)

in_features:输入神经元个数。

out_features:输出神经元个数。

bias:训练出的模型是否含偏差项(bias)。

device:以CPU或GPU设备训练。

dtype:输出、输入张量的数据类型。

通常只设置前面两个参数。

请参阅程序 【03_04_完全连接层.ipynb】

4-3-2 Dropout Layer

Dropout Layer在每一次epoch/step训练时,会随机丢弃设定比例的输入神经元,避免过度拟合,只在训练时运作,预测时会忽视Dropout,不会有任何作用。语法如下:

torch.nn.Dropout(p=0.5, inplace=False)参数说明如下:

p:丢弃的比例,介于(0, 1)之间。

inplace=True:对输入直接修改,不另产生变量,节省内存,通常不设定。

根据大部分学者的经验,在神经网络中使用Dropout会比正则化(Regularizer) [13] 效果来得好。

Dropout不会影响输出神经元个数。

执行结果:输入维度为(20, 16),输出维度仍是(20, 16)。

其他的神经层在后续算法使用到时再说明。 KXYC4oZKKv27CWrHCPZZGST5irHScMOD/WI0+Tno6k9ul923uG5QtgwXuMDQryQy

点击中间区域
呼出菜单
上一章
目录
下一章
×