每天分钟深度学习框架pytorch:批归一化全连接网络完成手写字体识别

职场   2024-11-18 23:59   浙江  

本文重点

前面我们学习了普通的全连接神经网络,后面我们学习了带有激活层的全连接神经网络,本文我们继续进一步升级,我们学习带有批归一化的全连接神经网络,批归一化可以加快神经网络的训练速度,减少过拟合,具体它的原理,大家可以看我们的《每天五分钟深度学习》专栏,这里就不再详细的介绍了,下面先看一下是如何搭建模型的。

模型搭建

带有批标准层和激活函数的三层全连接神经网络

class BatchNet(nn.Module):

def __init__(self, in_dim,n_hidden_1, n_hidden_2, out_dim) :

super(BatchNet,self).__init__()

self.layer1 = nn.Sequential(nn.Linear(in_dim,n_hidden_1),nn.BatchNorm1d(n_hidden_1),nn.ReLU(True)) self.layer2=nn.Sequential(nn.Linear(n_hidden_1,n_hidden_2), nn.BatchNorm1d(n_hidden_2),nn.ReLU(True)) self.layer3 = nn.Sequential(nn.Linear (n_hidden_2,out_dim))

def forward(self,x):

x=self.layer1(x)

x=self.layer2(x)

x=self.layer3(x)

return x

同样使用nn.Sequential( )将 nn.BatchNormld ()组合到网络层中,注意批标准化一般放在全连接层的后面、非线性层(激活函数)的前面。

由于深度学习框架pytorch的封装作用,使得搭建网络的时候很容易封装一个批归一化层。

下面使用这个神经网络完成手写字体的识别

基于该网络完成手写字体识别

每天五分钟玩转人工智能
一个人没有梦想和神经网络有什么区别?
 最新文章