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

PyTorch快速入门教程三(神经网络)

为什么80%的码农都做不了架构师?>>>   hot3.png

201706201716185297.png

Neural Network

其实简单的神经网络说起来很简单,先看下图:

Neural Network

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

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

Code

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

定义模型

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)

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

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

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

PyTorch神经网络

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

转载于:https://my.oschina.net/earnp/blog/1113890

相关文章:

  • the import java.util.* cannot be resolve,怎么解决
  • 美国科技公司的“放权时代”:出走的创始人不在少数
  • JavaScript DOM 10 - 滚动
  • 与高通纠纷受关注 苹果利润或遭诺基亚侵权诉讼蚕食
  • Atlantis退出核心VDI软件和一体机市场
  • 精解Java中代理模式的实现
  • 硅谷投资人Tusk:特朗普当选 硅谷的新机会在哪儿
  • 法国轻奢手机品牌HANMAC 解决手机行业创新瓶颈
  • 易维帮助台如何“重新定义客户服务”?
  • 智慧城市建设新理念
  • 继续走向企业市场 苹果与四大之一德勤合作
  • 依然不可或缺!聊一聊网线的发展历程
  • UOS3.0:给企业以安全感与确定性
  • 《简明电路分析》——1.2节电学主要参数
  • 用户数据是关键 欧盟或调查微软收购领英交易
  • CentOS从零开始部署Nodejs项目
  • CSS 三角实现
  • Git 使用集
  • javascript从右向左截取指定位数字符的3种方法
  • laravel with 查询列表限制条数
  • PV统计优化设计
  • Twitter赢在开放,三年创造奇迹
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端性能优化——回流与重绘
  • 小李飞刀:SQL题目刷起来!
  • nb
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #HarmonyOS:Web组件的使用
  • (+4)2.2UML建模图
  • (02)Hive SQL编译成MapReduce任务的过程
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)正点原子I.MX6ULL u-boot移植
  • (分享)自己整理的一些简单awk实用语句
  • (七)Knockout 创建自定义绑定
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net 6.0 处理跨域的方式
  • .Net core 6.0 升8.0
  • .NET连接MongoDB数据库实例教程
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .考试倒计时43天!来提分啦!
  • @Documented注解的作用
  • @WebService和@WebMethod注解的用法
  • [ 数据结构 - C++]红黑树RBTree
  • [2024-06]-[大模型]-[Ollama]- WebUI
  • [Android] Amazon 的 android 音视频开发文档
  • [C][数据结构][树]详细讲解
  • [CTSC2014]企鹅QQ
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx
  • [iOS]如何删除工程里面用cocoapods导入的第三方库