PyTorch-神经网络

神经网络,这也是深度学习的基石,所谓的深度学习,也可以理解为很深层的神经网络。说起这里,有一个小段子,神经网络曾经被打入了冷宫,因为SVM派的崛起,SVM不了解的同学可以去google一下,中文叫支持向量机,因为其有着完备的数学解释,并且之前神经网络运算复杂等问题,导致神经网络停步不前,这个时候任何以神经网络为题目的论文都发不出去,反向传播算法的鼻祖hinton为了解决这个问题,于是就想到了用深度学习为题目。

段子说完,接下来开始我们的简单神经网络。

Neural Network

其实简单的神经网络说起来很简单

通过图片就能很简答的看出来,其实每一层网络所做的就是 y=W×X+b,只不过W的维数由X和输出维书决定,比如X是10维向量,想要输出的维数,也就是中间层的神经元个数为20,那么W的维数就是20×10,b的维数就是20×1,这样输出的y的维数就为20。

中间层的维数可以自己设计,而最后一层输出的维数就是你的分类数目,比如我们等会儿要做的MNIST数据集是10个数字的分类,那么最后输出层的神经元就为10。

Code

有了前面两节的经验,这一节的代码就很简单了,数据的导入和之前一样

定义模型

|-------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Neuralnetwork(nn.Module): def init(self, in_dim, n_hidden_1, n_hidden_2, out_dim): super(Neuralnetwork, self).init() self.layer1 = nn.Linear(in_dim, n_hidden_1) self.layer2 = nn.Linear(n_hidden_1, n_hidden_2) self.layer3 = 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 model = Neuralnetwork(28*28, 300, 100, 10) if torch.cuda.is_available(): model = model.cuda() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=learning_rate) |

上面定义了三层神经网络,输入是28×28,因为图片大小是28×28,中间两个隐藏层大小分别是300和100,最后是个10分类问题,所以输出层为10.

训练过程与之前完全一样,我就不再重复了,可以直接去github参看完整的代码

这是50次之后的输出结果,可以和上一节logistic回归比较一下

可以发现准确率大大提高,其实logistic回归可以看成简单的一层网络,从这里我们就可以看出为什么多层网络比单层网络的效果要好,这也是为什么深度学习要叫深度的原因。

相关推荐
工程师老罗1 天前
基于Pytorch的YOLOv1 的网络结构代码
人工智能·pytorch·yolo
JarryStudy1 天前
HCCL与PyTorch集成 hccl_comm.cpp DDP后端注册全流程
人工智能·pytorch·python·cann
Eloudy1 天前
用 Python 直写 CUDA Kernel的技术,CuTile、TileLang、Triton 与 PyTorch 的深度融合实践
人工智能·pytorch
Rorsion2 天前
PyTorch实现线性回归
人工智能·pytorch·线性回归
骇城迷影2 天前
Makemore 核心面试题大汇总
人工智能·pytorch·python·深度学习·线性回归
mailangduoduo2 天前
零基础教学连接远程服务器部署项目——VScode版本
服务器·pytorch·vscode·深度学习·ssh·gpu算力
多恩Stone2 天前
【3D AICG 系列-6】OmniPart 训练流程梳理
人工智能·pytorch·算法·3d·aigc
前端摸鱼匠2 天前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测
纤纡.2 天前
PyTorch 入门精讲:从框架选择到 MNIST 手写数字识别实战
人工智能·pytorch·python
子榆.2 天前
CANN 与主流 AI 框架集成:从 PyTorch/TensorFlow 到高效推理的无缝迁移指南
人工智能·pytorch·tensorflow