当前位置: 首页 > news >正文

深度学习技术栈 —— 用Pytorch搭建神经网络识别数字(Kaggle实战)

深度学习技术栈 —— 用Pytorch搭建神经网络识别数字 (Kaggle实战)

  • 一、项目信息
    • 1.1 参考文章
  • 二、搭建过程
    • 2.1 逻辑回归
    • 2.2 Artificial Neural Network (ANN)
    • 2.3 Convolutional Neural Network (CNN)
    • 2.4 训练过程总结

一、项目信息

Kaggle比赛地址:Digit Recognizer - Kaggle

1.1 参考文章

1.1 参考文章或视频链接
[1] 纯手写:《纯Python搭建神经网络并进行数字识别 》
[2] Keras:《用Keras搭建神经网络 》
[3] Kaggle金牌Pytorch,本文的代码来源:Pytorch Tutorial for Deep Learning Lovers
如果访问较慢的话,我也上传了一份到CSDN中(0积分):digit-recognizer-kaggle - CSDN资源

二、搭建过程

2.1 逻辑回归

这种方式非常的原始

2.2 Artificial Neural Network (ANN)

也就是全连接神经网络,只不过多加了几层。

2.3 Convolutional Neural Network (CNN)

卷积神经网络,在第2000轮迭代时,就达到了98%的准确率。

2.4 训练过程总结

详细代码过程我就不再赘述了,网上有很多关于逻辑回归,神经网络及CNN的代码与讲解。

# (1) creating the model class.
model = CNNModel() # Create CNN# (2) creating loss func.
error = nn.CrossEntropyLoss() # Cross Entropy Loss # (3) creating a optimizer.
learning_rate = 0.1
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) # SGD Optimizer# 训练过程
for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):# Variable是 PyTorch 中的一个类,用于表示张量(Tensor),即深度学习中的多维数据。train = Variable(images.view(100,1,28,28))labels = Variable(labels)# Clear gradients。清空梯度,固定套路模板。optimizer.zero_grad()# Forward propagation,根据你模型的不同,这里千变万化。outputs = model(train)# Calculate softmax and ross entropy loss。监督学习中计算误差,固定套路模板。loss = error(outputs, labels)# 当调用loss.backward()函数时,它会计算损失函数对每个参数的梯度,# 并将梯度存储在参数的grad属性中。然后,optimizer.step()函数会访问参数的grad属性,并根据学习率来更新参数的值# Calculating gradients。误差的反向传播,固定套路模板。loss.backward() # This loss value is used to output, but why need to be backward?# Update parameters。根据梯度值,更新权重参数,固定套路模板。optimizer.step()

总结下来总共有四步是雷打不动的。

# 训练过程
for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):# data...# 1.清空梯度optimizer.zero_grad()# your model operation# 2.计算误差loss = error(outputs, labels)# 3.反向传播loss.backward()# 4.更新权重矩阵optimizer.step()

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据库性能优化的解决方案
  • 为何现在流行OpenStack和Docker结合?
  • 99个Python脚本实用实例
  • react 页签(自行封装)
  • 力扣每日一题---1547. 切棍子的最小成本
  • MSVS C# Matlab的混合编程系列1 - 看似简单的问题引出
  • Android学习(五):常用控件
  • 【EI会议征稿通知】2024年通信安全与信息处理国际学术会议(CSIP 2024)
  • C#调用C动态链接库
  • MicroPython核心(1):源码获取、编译构建
  • GO 中如何防止 goroutine 泄露
  • Spring Boot各类变量的使用
  • Redis原理篇(String)
  • MVC的设计理念
  • NLP自然语言处理介绍
  • Google 是如何开发 Web 框架的
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • const let
  • HTTP中GET与POST的区别 99%的错误认识
  • October CMS - 快速入门 9 Images And Galleries
  • 警报:线上事故之CountDownLatch的威力
  • 开发基于以太坊智能合约的DApp
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 实现菜单下拉伸展折叠效果demo
  • 小而合理的前端理论:rscss和rsjs
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 交换综合实验一
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #FPGA(基础知识)
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #数学建模# 线性规划问题的Matlab求解
  • (27)4.8 习题课
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (function(){})()的分步解析
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pycharm)安装python库函数Matplotlib步骤
  • (八)Flink Join 连接
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)PySpark3:SparkSQL编程
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET CF命令行调试器MDbg入门(一)
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET MVC 验证码
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net程序集学习心得
  • .NET导入Excel数据
  • .NET实现之(自动更新)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件