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

flash网站开发框架微信跳转链接生成器免费

flash网站开发框架,微信跳转链接生成器免费,我自己的网站怎么做关键词优化,广告设计网站哪个好神经网络能够使用torch.nn包构建神经网络。 现在你已经对autogard有了初步的了解#xff0c;nn基于autograd来定义模型并进行微分。一个nn.Module包含层#xff0c;和一个forward(input)方法并返回output。 以如下分类数字图片的网络所示#xff1a; 这是一个简单的前馈网络…神经网络能够使用torch.nn包构建神经网络。 现在你已经对autogard有了初步的了解nn基于autograd来定义模型并进行微分。一个nn.Module包含层和一个forward(input)方法并返回output。 以如下分类数字图片的网络所示 这是一个简单的前馈网络。它接受输入经过一层接着一层的神经网络层最终得到输出。 一个神经网络典型的训练流程如下 定义拥有可学习的参数的神经网络迭代数据集作为输入经过网络处理输入计算损失离正确输出的距离反向传播梯度到网络参数更新网络的权重比如简单的更新规则weightweight-learning_rate*gradient定义网络 让我们定义这个网络   import torch.nn as nn import torch.nn.functional as F class Net(nn.Module):def __init__(self):super(Net,self).__init__()# 一个输入图片通道六个输出通道5*5的卷积核self.conv1nn.Conv2d(1,6,5)self.conv2nn.Conv2d(6,16,5)# 一个仿射操作ywxbself.fc1nn.Linear(16*5*5,120)self.fc2nn.Linear(120,84)self.fc3nn.Linear(84,10)def forward(self,x):# 2*2窗口的最大赤化xF.max_pool2d(F.relu(self.conv1(x)),(2,2))# 如果是一个方块就只需要指定一个长度xF.max_pool2d(F.relu(self.conv2(x)),2)xx.view(-1,self.num_flat_features(x))xF.relu(self.fc1(x))xF.relu(self.fc2(x))xself.fc3(x)return xdef num_flat_features(self,x):     #第一个尺寸是batch sizesizex.size()[1:]print(size)num_features1for s in size:num_features*sreturn num_featuresnetNet() print(net) out: Net((conv1): Conv2d(1, 6, kernel_size(5, 5), stride(1, 1))(conv2): Conv2d(6, 16, kernel_size(5, 5), stride(1, 1))(fc1): Linear(in_features400, out_features120, biasTrue)(fc2): Linear(in_features120, out_features84, biasTrue)(fc3): Linear(in_features84, out_features10, biasTrue) ) 你只需要定义forward函数backward函数计算梯度的地方是自动定义的。你能够在forward中使用任意的tensor运算。 模型可学习的参数将通过net.parameters()返回 paramslist(net.parameters()) print(len(params)) print(params[0].size())out:10torch.Size([6, 1, 5, 5]) 让我们试一下随机的32*32输入注意这个网络LeNet期望的输入尺寸是32*32。为了在MNIST数据集上使用这个网络请将数据集的图片调整到32*32。 inputtorch.randn(1,1,32,32) outnet(input) print(out)out:tensor([[ 0.0355, -0.0294, -0.0025, -0.0743, -0.0168, -0.0202, -0.0558,0.0803, -0.0162, -0.1153]]) 将所有参数的梯度缓冲变为0并使用随机梯度进行后向传播 net.zero_grad() out.backward(torch.randn(1,10))   !注意 torch.nn只支持最小批。整个torch.nn包只支持输入的样本是一个最小批而不是一个单一样本. 举例来说nn.Conv2d将会接收4维的Tensor,nSamples*nChannels*Heights*Width. 如果你有一个单一样本可以使用input.unsqueeze(0)来增加一个虚假的批维度。 在进行进一步处理前让我们简要重复目前为止出现的类。 扼要重述 torch.Tensor- 一个支持自动求导操作比如backward()的多维数组。同时保留关于tensor的梯度.nn.Module- 神经网络模型。简易的封装参数的方法帮助将它们转移到GPU上导出加载等等.nn.Parameters - 一类Tensor,在作为Module属性指定时会自动注册为一个parameter.autograd.Function- 自动求导操作前向与后向的实现。每个tensor操作至少创建一个Functional节点它连接到创建Tensor的函数并编码它的历史在这一节我们包含了 定义一个神经网络处理输入并调用后向传播还剩下 计算损失更新网络的权重  损失函数  损失函数接收对输出目标作为输入计算一个值估计输出与目标之间的距离。 nn包下有一些不同的损失函数。一个简单的损失是nn.MSELoss,它计算的是输入与输出之间的均方误差。 比如 outputnet(input) targettorch.randn(10) targettarget.view(1,-1) criterionnn.MSELoss()losscriterion(output,target) print(loss) out:tensor(1.1941) 现在如果你如果按照loss的反向传播方向使用.grad_fn属性你将会看到一个计算图如下所示 input - conv2d - relu - maxpool2d - conv2d - relu - maxpool2d - view - linear - relu - linear - relu - linear - MSELoss - loss 所以当你调用loss.backward(),整个图关于损失求导并且图中所有requires_gradTrue的tensor将会有它们的.grad属性。Tensor的梯度是累加的。 为了说明这一点我们跟踪backward的部分步骤 print(loss.grad_fn) #MSELoss print(loss.grad_fn.next_functions[0][0]) #Linear print(loss.grad_fn.next_functions[0][0].next_functions[0][0]) # ReLU out:MseLossBackward object at 0x0000020E2E1289B0AddmmBackward object at 0x0000020E2BF48048ExpandBackward object at 0x0000020E2BF48048   Backprop 为了反向传播error我们需要做的就是loss.backward()。你需要清除现有的梯度否则梯度将会累计到现有梯度上。  现在我们会调用loss.backward(),观察调用backward前后conv1层偏差的梯度。 net.zero_grad()print(conv1.bias.grad before backward) print(net.conv1.bias.grad) loss.backward() print(conv1.bias.grad after backward) print(net.conv1.bias.grad)out:conv1.bias.grad before backwardNone # 上一个版本将会是一个为0的向量conv1.bias.grad after backwardtensor(1.00000e-03 *[ 4.0788, 1.9541, 5.8585, -2.3754, 2.3815, 1.3351])    现在我们知道了如何使用loss函数 稍后阅读 神经网络包包含各种模型和loss函数它们组成了深度神经网络的构建区块。完整的文档在这里。http://pytorch.org/docs/nn  剩下来需要学习的是 更新网络的权重  更新权重 实际中使用的最简单更新规则是随机梯度下降SGD: weightweight-learning_rate*gradient  我们能够使用简单的python代码实现 learning_rate0.01 for f in net.parameters():f.data.sub_(f.grad.data*learning_rate)   然而当我们使用神经网络你想要使用各种不同的更新规则比如SGD,Nesterov-SGD,Adam,RMSProp等。为了做到这一点我们建立了一个小的包torch.optim实现了这些方法。使用它非常简单。 import torch.optim as optim#create your optimizer optimizer optim.SGD(net.parameters(),lr0.01)# in your training loop optimizer.zero_grad() outputnet(input) losscriterion(output,target) loss.backward() optimizer.step()   注意  手动使用optimizer.zero_grad()来将梯度缓冲变为0。这在Backprop章节进行了解释因为梯度是累加的。转载于:https://www.cnblogs.com/Thinker-pcw/p/9635572.html
http://www.pierceye.com/news/820546/

相关文章:

  • 做论坛网站多少钱企业做网站有用吗天涯
  • 做网站价格多少钱网站设计培训课程
  • 做网站找什么公司好淘宝客网站可以做百度推广
  • 北京网站建设首选石榴汇企业vi设计一整套
  • 做网站较好的公司c 网站开发培训
  • 一个云主机怎么挂两个网站建立网站要准备多少钱
  • 贵阳网站建设在线学做凉菜冷菜的网站
  • 购销网站建设视频百度云广东省深圳市龙华区
  • 做建材外贸哪个网站比较好乐清比较好的设计公司
  • 做电影种子下载网站违法吗桂林网站建设凡森网络
  • 云南省建设厅专家注册网站织梦网站怎么做下载地址
  • 你们需要网站建设搜索引擎调词平台多少钱
  • 北京建设官方网站百度公司官网首页
  • 四川禾力建设工程质量检测有限公司网站惠州有哪些做网站的公司
  • 深圳手机网站设计公司php网站安装图解
  • 网站开发 工作职责平面设计和室内设计有什么区别
  • 防城港门面做网站的代做网站跳转
  • 珠海网站系统建设苏州房地产网站建设
  • 长治网站建设培训文件检察院网站建设
  • 茶文化网站制作asa8.4 做网站映射
  • 网站建设步骤 文档富阳做网站洛洛科技
  • 列举网站建设的SEO策略广东建设行业招聘 什么网站
  • 免费社区建站系统seo是指什么
  • 网站建设实训的认识小企业网站建设哪里做得好
  • 无锡seo网站排名优化牟平建设企业网站
  • 网络营销好找工作吗成都seo优化公司排名
  • 网站换关键词山西网站备案
  • 网站微信建设运维经验深圳罗湖企业网站
  • 国外设计类网站泰安网网站建设
  • 做暖暖小视频网站手机 dns 国外网站