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

找企业做网站全国今日新增疫情

找企业做网站,全国今日新增疫情,怎么建立网上销售平台,济宁网站建设服务7.3 误差反向传播法的梯度确认 我们现在学习了两种求梯度的方法,一种是基于数值微分的方法,另一种是解析性地求解数学式的方法。后者通过使用误差反向传播法,即使存在大量参数,也可以高效计算梯度。之后我们就使用误差反向传播法…

7.3 误差反向传播法的梯度确认

我们现在学习了两种求梯度的方法,一种是基于数值微分的方法,另一种是解析性地求解数学式的方法。后者通过使用误差反向传播法,即使存在大量参数,也可以高效计算梯度。之后我们就使用误差反向传播法而不再通过数值微分进行求解。

那么,数值微分存在的意义是什么呢?

实际上,我们在缺人误差反向传播法的实现是否正确时就会用到数值微分。因为其实现较为简单,而且一般情况下不会出现错误。误差反向传播则计算复杂,很容易出错,确认二者计算的结果是否一致的操作称为 “梯度确认”。其代码实现如下:

import sys,os
sys.path.append(os.pardir)
import numpy as np
from dataset.mnist import load_mnist
from two_layer_net import TwoLayerNet#读入数据
(x_train, t_train),(x_test, t_test) = \load_mnist(normalize=True, one_hot_label = True)
network = TwoLayerNet(input_size = 784, hidden_size = 50, out_size = 10)
x_batch = x_train[:3]
t_batch = t_train[:3]grad_numerical = network.numerical_gradient(x_batch, t_batch)
grad_backprop = network.gradient(x_batch, t_batch)#求各个权重的绝对误差的平均值
for key in grad_numerical.keys():diff = np.average(np.abs(grad_backprop[key] - grad_numerical[key]))print(key + ":" + str(diff))

最初 我们读入mnist数据集,使用其中的一部分,确认数值微分求出的梯度和误差反向传播法求出的梯度的误差。误差的计算方法是求各个权重参数中对应元素的差的绝对值,并求其平均值。运行上面的代码后,会输出下面的结果。

b1: 9.70418809871e -13

w2: 8.41139039497e -13

b2: 1.1945999745e -10

w1: 2.223246644e -13

从结果可以看出, 数值微分和误差反向传播法的梯度误差很小,第一层只有9.7e-13,这样我们就知道误差反向传播法求出的梯度是正确的,实现无误。

一般来说,数值微分和误差反向传播法的梯度误差不会等于0,因为计算机计算精度有限(通常是32位),实现正确的话这个误差值一般是一个很小很小的数,无线接近于0,但不会到0.如果这个值很大,则说明误差反向传播法的实现存在错误。

7.4 使用误差反向传播法的学习

接下来,我们再看一下使用误差反向传播法的神经网络学习。和之前的实现相比,不同之处仅在于使用误差反向传播法求梯度这一个地方。这里只展示代码:

import sys, os
sys.path.append(os.pardir)
import numpy as np
from dataset.mnist import load_mnist 
from two_layer_net import TwoLayerNet# 读入数据
(x_train, t_train), (x_test,t_test) = \  load_mnist(normalize=True, one_hot_label=True)network = TwoLayerNet(input_size = 784, hiddent_size=59, output_size = 10)iters_num = 10000
train_size = x_train.shape[0]
batch_size = 100
learning_rate = 0.1
train_loss_list = []
train_acc_list = []
test_acc_list = []iter_per_epoch = max(train_size / batch_size, 1)for i in range(iters_num):batch_mask = np.random.choice(train_size, batch_size)x_batch = x_train[batch_mask]t_batch = t_train[bacth_mask]# 通过误差反向传播法求梯度grad = network.gradient(x_batch, t_batch)# 更新for key in ('W1','b1','W2','b2'):network.params[key] -= learning_rate * grad[key]    loss = network.loss(x_batch, t_batch)train_loss_list.append(loss)if i % iter_per_epoch == 0:train_acc = network.accuracy(x_train, t_train)test_acc = network.accuracy(x_test, t_test)train_acc_list.append(train_acc)test_acc_list.append(test_acc)print(train_acc, test_acc)

在本章节中,我们将计算过程可视化,称为计算图,并使用计算图介绍了神经网络中的误差反向传播法,以层为单位实现了神经网络中的处理。我们学过的层有ReLU、Softmax-with-Loss层、Affine层、Softmax层等等,这些层都实现了forward和backward方法,将数据进行正向传播和反向传播,高效计算权重参数的梯度。通过层进行模块化,神经网络可以自由地组装层,构建不同的神经网络。

本章节所学内容可以总结如下:

http://www.dtcms.com/wzjs/208773.html

相关文章:

  • 建设p2p网站凤山网站seo
  • 搭建网站有费用吗长沙seo排名收费
  • 郑州模板网站建设网站自助建站系统
  • 番禺外贸网站建设知乎怎么申请关键词推广
  • 要进一步增强门户网站建设合力爱站网长尾关键词挖掘工具福利片
  • 北京招聘网站建设如何网上免费打广告
  • 做网站没有数据库网页设计软件
  • 个人如何做网站软件n127网推广
  • 关于做摄影网站谷歌paypal下载
  • 创新 政府网站建设管理专门的网页制作工具有
  • 惠州做棋牌网站建设哪家服务好网站seo网络优化
  • 广告联盟没有网站怎么做如何建立公司网站网页
  • 公司网站一年费用如何优化网络连接
  • 做淘宝主要看哪些网站搜索引擎排名优化方案
  • 贵阳好的网站建设网络工程师培训班要多少钱
  • 不用开源做网站百度客服电话人工服务热线
  • 做拍客哪个网站好百度推广代理公司广州
  • html5搭建网页游戏自己的网站怎么样推广优化
  • 想开广告图文店在哪学广州seo优化排名公司
  • 建设工程规范发布网站网络营销与直播电商
  • 洛阳制作网站公司吗济南优化哪家好
  • dw做网站时怎么改为绝对路径网站优化排名资源
  • 简述建设网站的具体步骤中国网评中国网评
  • 请兼职做企业网站设计怎么收费国外电商平台有哪些
  • 文化传媒网站建设武汉做网页推广公司
  • 好看企业官网源码淘宝关键词排名优化技巧
  • 太原百度推广开户seo的搜索排名影响因素有
  • 用别人的二级域名做网站seo都用在哪些网站
  • 做赚钱网站百度无锡营销中心
  • 什么是网络营销工程师整站seo