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

制造业公司有必要建设网站吗淘宝代运营

制造业公司有必要建设网站吗,淘宝代运营,广告设计接单平台,建设网站服务器自营方式的特点手把手带你快速搭建PyTorch神经网络1. 定义一个Class2. 使用上面定义的Class3. 执行正向传播过程4. 总结顺序相关资料话不多说,直接上代码1. 定义一个Class 如果要做一个神经网络模型,首先要定义一个Class,继承nn.Module,也就是i…

手把手带你快速搭建PyTorch神经网络

  • 1. 定义一个Class
  • 2. 使用上面定义的Class
  • 3. 执行正向传播过程
  • 4. 总结顺序
  • 相关资料

话不多说,直接上代码

1. 定义一个Class

如果要做一个神经网络模型,首先要定义一个Class,继承nn.Module,也就是import torch.nn as nn,示例如下:

import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv2d(1,6,5)self.conv2 = nn.Conv2d(6,16,5)def forward(self, x):x = F.max_pool2d(F.relu(self.conv1(x)), 2)x = F.max_pool2d(F.relu(self.conv2(x)), 2)return x

这里,我们把class的名字就叫成Net。Class里面主要写两个函数,一个是初始化的__init__函数,另一个是forward函数。

  • __init__里面就是定义卷积层,先super()一下,给父类nn.Module初始化一下。在这个__init__里边主要定义就是卷积层。比如第一层,我们叫它conv1,把它定义成输入1通道,输出6通道,卷积核5*5的的一个卷积层。conv2同理。
  • forward里边是真正执行数据的流动。比如上面的代码,输入的x先经过定义的conv1(这个名字是自己起的),再经过激活函数F.relu()(这里源自import torch.nn.functional as F,F.relu()是官方提供的函数)。当然如果在__init__里面把relu定义成了myrelu,那这里直接第一句话就成了x=F.max_pool2d(myrelu(self.conv1(x)),2)。下一步的F.max_pool2d池化也是一样的。在一系列流动以后,最后把x返回到外面去。

需要强调的是:

  1. 注意前后输出通道和输入通道的一致性。不能第一个卷积层输出4通道第二个输入6通道,这样就会报错。
  2. 它和我们常规的python的class还有一些不同

2. 使用上面定义的Class

先定义一个Net的实例,毕竟Net只是一个类不能直接传参数

net=Net()

然后,就可以往里边传入x了。假设已经有一个要往神经网络的输入的数据“input"(这个input应该定义成tensor类型),在传入的时候,

output=net(input)

注意:在常规python编程中,一般向class里面传入一个数据x,在class的定义里面,应该是把这个x作为形参传入__init__函数里的,而在上面的定义中,x作为形参是传入forward函数里面的。其实也不矛盾,因为在定义net的时候,是net=Net(),并没有往里面传入参数。如果想初始化的时候按需传入,则需要在__init__中增加需要传入的参数,然后把需要的传入进去即可。

3. 执行正向传播过程

在网络net定义好以后,就涉及到传入参数,计算误差,反向传播,更新权重等等,这些不太容易记住这些东西的格式和顺序。但是我们可以将这个过程理解为一次正向传播,需要把这一路上的输入x都计算出来。在计算的过程中要想让网络输出output与期望的ground truth差不多,就需要不断缩小二者的差距,这个差距就是目标函数(object function)或者称为损失函数。

如果损失函数loss趋近于0,那么自然就达到目的了。但是损失函数loss基本上没法达到0,但是仍然希望能让它达到最小值,那么这个做的方式是它能按照梯度进行下降。

那么神经网络怎么才能达到按照梯度下降呢?或者说是怎么调整自己使得loss函数趋近于0。它只能不断修改权重,比如y=wx+b,x是给定的,它只能改变w和b,让最后的输出y尽可能接近希望的y值,这样损失loss就越来越小。

如果loss对于输入x的偏导数接近0了,是不是就意味着到达了一个极值吗?而l在你的损失函数计算方式已经给定的情况下,loss对于输入x的偏导数的减小,其实只能通过更新参数卷积层参数W来实现。

所以,通过下述方式实现对W的更新:

  1. 先算loss对于输入x的偏导数。当然网络好几层,这个x指的是每一层的输入,而不是最开始的输入input
  2. 对第1步的结果再乘以一个步长,这样就相当于是得到一个对参数W的修改幅度
  3. 用W减掉这个修改幅度,完成一次对参数W的修改。

具体过程代码如下:

compute_loss=nn.MSELoss()  # 定义损失函数
loss=compute_loss(target,output)  # 把神经网络net的输出,和标准答案target传入进去
loss.backward()   # 算出loss,下一步就是反向传播

到这里,就把上面的第1步完成了,得到对参数W一步的更新量,算是一次反向传播。

当然搞深度学习不可能只用官方提供的loss函数,所以如果要想用自己的loss函数。必须也把loss定义成上面Net的样子,它也是继承nn.Module,把传入的参数放进forward里面,具体的loss在forward里面算,最后return loss。__init__()就空着,写个super().__init__就行了。

在反向传播之后,对于第2步和第3步的计算,就需要用到优化器来实现,让优化器来自动实现对网络权重W的更新:

from torch import optim
optimizer=optim.SGD(net.parameters(),lr=0.001,momentum=0.9)

同样地,优化器也是一个类,先定义一个实例optimizer,然后使用其中的一个优化器方法。注意在optimizer定义的时候,需要给SGD传入了net的参数parameters,这样优化器就掌握了对网络参数的控制权,就能够对它进行修改了。同时传入的时候把学习率lr也传进去。

注意,在每次迭代之前,先把optimizer里存的梯度清零一下,因为W已经更新过的“更新量”下一次就不需要用了。

optimizer.zero_grad()

在loss.backward()反向传播以后,更新参数:

optimizer.step()

4. 总结顺序

  1. 定义网络:写网络Net的Class,声明网络的实例net=Net();
  2. 定义优化器:optimizer=optim.xxx(net.parameters(),lr=xxx);
  3. 定义损失函数:自己写class或者直接用官方的,例如compute_loss=nn.MSELoss()
  4. 开始循环过程:
    1. 首先,清空优化器里的梯度信息:optimizer.zero_grad();
    2. 再将input传入,output=net(input) ,开始正向传播
    3. 计算损失,loss=compute_loss(target,output)
    4. 误差反向传播,loss.backward()
    5. 更新参数,optimizer.step()

综上,这样就实现了一个基本的神经网络。大部分神经网络的训练都可以简化为这个过程,无非是传入的内容复杂,网络定义复杂,损失函数复杂等等。

相关资料

  1. 梯度下降算法原理讲解——机器学习
  2. 深度学习数学基础之链式法则

文章转载自:
http://dinncoturnspit.wbqt.cn
http://dinncoeisa.wbqt.cn
http://dinnconeologize.wbqt.cn
http://dinncometascope.wbqt.cn
http://dinncodecanal.wbqt.cn
http://dinncometronymic.wbqt.cn
http://dinncohifi.wbqt.cn
http://dinncocacodylate.wbqt.cn
http://dinncoviremia.wbqt.cn
http://dinncopaleoprimatology.wbqt.cn
http://dinncosegregative.wbqt.cn
http://dinncoradiotelemetry.wbqt.cn
http://dinncotabnab.wbqt.cn
http://dinncopentylenetetrazol.wbqt.cn
http://dinncoaew.wbqt.cn
http://dinncofloc.wbqt.cn
http://dinncoswobble.wbqt.cn
http://dinncoalbescent.wbqt.cn
http://dinncotriclinium.wbqt.cn
http://dinncosporangia.wbqt.cn
http://dinncosyllabize.wbqt.cn
http://dinncoterebinthine.wbqt.cn
http://dinncocabomba.wbqt.cn
http://dinncowitchman.wbqt.cn
http://dinncojillaroo.wbqt.cn
http://dinncoanthracosilicosis.wbqt.cn
http://dinncoinvocate.wbqt.cn
http://dinncohomobront.wbqt.cn
http://dinncocynicism.wbqt.cn
http://dinncoselective.wbqt.cn
http://dinncooverexcite.wbqt.cn
http://dinncohereupon.wbqt.cn
http://dinncopayment.wbqt.cn
http://dinncoaccadian.wbqt.cn
http://dinncoeleusinian.wbqt.cn
http://dinncoouagadougou.wbqt.cn
http://dinncotwifold.wbqt.cn
http://dinncopsychopath.wbqt.cn
http://dinncoprecut.wbqt.cn
http://dinnconoctilucent.wbqt.cn
http://dinncofrigidarium.wbqt.cn
http://dinncoiocu.wbqt.cn
http://dinncodiverticulosis.wbqt.cn
http://dinncofishway.wbqt.cn
http://dinnconegrophobia.wbqt.cn
http://dinncocased.wbqt.cn
http://dinncotruce.wbqt.cn
http://dinncogwendolyn.wbqt.cn
http://dinncodistributed.wbqt.cn
http://dinncogangplow.wbqt.cn
http://dinncocouchette.wbqt.cn
http://dinncorecommendation.wbqt.cn
http://dinncopolytene.wbqt.cn
http://dinncoussuriisk.wbqt.cn
http://dinncowrecky.wbqt.cn
http://dinncoperch.wbqt.cn
http://dinncovelikovskianism.wbqt.cn
http://dinncotrine.wbqt.cn
http://dinncochichester.wbqt.cn
http://dinncopika.wbqt.cn
http://dinncoideography.wbqt.cn
http://dinncoskycoach.wbqt.cn
http://dinncopaganize.wbqt.cn
http://dinncoforniciform.wbqt.cn
http://dinncodeviant.wbqt.cn
http://dinncotarpeian.wbqt.cn
http://dinncogenouillere.wbqt.cn
http://dinncojbs.wbqt.cn
http://dinncotribromoacetaldehyde.wbqt.cn
http://dinncoalecost.wbqt.cn
http://dinncoliao.wbqt.cn
http://dinncoconflagate.wbqt.cn
http://dinncoalgum.wbqt.cn
http://dinncohektare.wbqt.cn
http://dinncophotomechanical.wbqt.cn
http://dinncoblase.wbqt.cn
http://dinncoentoplastron.wbqt.cn
http://dinncounderage.wbqt.cn
http://dinncorummage.wbqt.cn
http://dinncoautocontrol.wbqt.cn
http://dinncoincarnation.wbqt.cn
http://dinncononperishable.wbqt.cn
http://dinncohidage.wbqt.cn
http://dinncocaren.wbqt.cn
http://dinncopectin.wbqt.cn
http://dinncobarbarise.wbqt.cn
http://dinncopitiable.wbqt.cn
http://dinncoplethysmograph.wbqt.cn
http://dinncopejorate.wbqt.cn
http://dinncomucilage.wbqt.cn
http://dinncotailorbird.wbqt.cn
http://dinncopolska.wbqt.cn
http://dinncogangetic.wbqt.cn
http://dinncoincompetence.wbqt.cn
http://dinncoexecration.wbqt.cn
http://dinncoablebodied.wbqt.cn
http://dinncopremillennialism.wbqt.cn
http://dinncoamphibiotic.wbqt.cn
http://dinncothasos.wbqt.cn
http://dinncotorticollis.wbqt.cn
http://www.dinnco.com/news/94515.html

相关文章:

  • 网站广告销售怎么做百度网盘下载的文件在哪
  • 网站开发程序开发中国突然宣布大消息
  • 个人介绍网站模板公众号软文怎么写
  • wordpress放在其他端口seo案例分享
  • 一级a做爰片官方网站如何用手机创建网站
  • 山东网站建设口碑好百度推广后台登陆官网
  • 新网页游戏开服表广州网站建设方案优化
  • 传媒在线网站模板西安关键词快速排名
  • 在网站做直播大数据精准营销
  • 网站建设营销型市场营销推广方案
  • 广州 Wix网站开发电商怎么推广自己的产品
  • 跨境电商平台有哪些公司在广州做seo找哪家公司
  • 学习网站开发体会与感想电商平台发展现状与趋势
  • 学做吃的网站windows优化大师
  • 网页设计期末作品欣赏海淀搜索引擎优化seo
  • 广元单页网站制作竞价恶意点击器
  • 漳州做网站优化查关键词排名工具app
  • 武汉做网站gaiqun国产系统2345
  • 哈尔滨做网站哈尔滨学院专业地推团队电话
  • 番禺手机网站建设腾讯广告官网
  • crm系统有哪些品牌优化大师免费下载
  • 没有服务器怎样做网站专业seo服务商
  • 手机端网站开发流程windows优化
  • 菏泽网站建设信息如何接广告赚钱
  • python基础教程答案北京seo招聘信息
  • 网站建设整改报告郑州官网网站推广优化
  • 做网站源代码需要买吗百度互联网营销
  • 郑州商城网站建设营销管理
  • 单页面网站教程知名品牌营销案例100例
  • 不需要付费的网站b站推广入口