Pytorch入门(二)——使用pytorch构建神经网络

Pytorch入门(二)——使用pytorch构建神经网络,第1张

Pytorch入门(二)——使用pytorch构建神经网络

1.pytorch的nn模块提供了两种快速搭建神经网络的方式。第一种是nn.Sequential,将网络以序列的方式进行组装,不过这种方法不常用。每个层使用前面层计算的输出作为输入,并且在内部都会维护层与层之间的权重矩阵和偏置向量。使用nn.Sequential方式定义模型,如下所示的代码定义了一个三层的神经网络。

import torch
model=torch.nn.Sequential(
torch.nn.Linear(10,20),
torch.nn.ReLU(),
torch.nn.Linear(20,2),
)

输入层的维度为10,中间隐藏层的维度为20,输出层的维度为2。中间使用ReLU作为激活函数

另一种常见的神经网络方式是继承nn.Module,需要实现_init_和forward前向传播两个方法。同样实现上面的三层神经网络。

import torch
class SimpleLayerNet(torch.nn.Module):
    def __init__(self,D_in,H,D_out):
        super(SimpleLayerNet,self).__init__()
        self.linear1=torch.nn.Linear(D_in,H)
        self.relu=torch.nn.ReLU()
        self.linear2=torch.nn.Linear(H,D_out)
    def forward(self,x):
        h_relu=self.relu(self.linear1(x),clamp(min=0))
        y_pred=self.linear2(h_relu)
        return y_pred
model=SimpleLayerNet(10,20,2)
model

2.神经网络实际上是线性方程的组合,借助神经网络的隐藏层可以将过多的特征压缩,压缩后的特征维度更低,便于线性方程的求解。

3.定义损失函数

#定义损失函数
criterion=torch.nn.MSELoss()

4.所有的优化器的输入基本上都是一样的,即需要优化参数和学习率。这里直接通过mode.parameters方法便可获取网络层中所有需要优化的权重矩阵及偏置项。

#定义优化器
optimizer=torch.optim.Adam(model.parameters(),0.001)

5.学习率的指定很关键,学习率过大,优化过程容易出现波动,学习率过小,又容易使模型收敛变慢。

6.模型需要多次迭代,而每次完整的迭代被视为一个epoch。在迭代过程中,每次取一批数据进行训练,记录每次训的损失,用于可视化展示。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存