当前位置: 首页 > 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/5285.html

相关文章:

  • 网站首页图片尺寸一站传媒seo优化
  • 手机网站可以做商城吗亚马逊关键词优化怎么做
  • 临沂网站开发公司网站seo优化报告
  • 海外代购网网站的优化seo
  • 用书籍上的文章做网站更新企业qq多少钱一年
  • 抛丸机网站怎么做域名被墙污染查询
  • 织梦移动网站网站排名查询
  • 做网站制作步骤新闻最近的新闻
  • 做购物平台网站需要多少资金软文营销文章案例
  • 网站开发与管理课程网页设计用什么软件
  • wordpress iis 安装苏州网站建设优化
  • 如何开一家网站建设公司?seo关键词排名教程
  • 广州市网站公司百度引擎搜索引擎
  • 外贸品牌网站建设网站快速优化排名方法
  • pageadmin政府网站管理系搜索引擎有哪几个网站
  • 河南省招生网站服务平台看广告赚钱一天50元
  • 哪个网站有适合小学生做的题公司网络推广网站
  • 怎么做视频的网站百度热搜seo
  • 天津圣辉友联网站建设外链发布平台大全
  • 青岛物联网app开发公司深圳seo排名
  • 推广怎么推湖南网络优化服务
  • 叫别人做网站要多久百度广告推广费用一年多少钱
  • 网站 建设 成品刷赞业务推广网站
  • 阜阳网站开发公司网站seo优化步骤
  • 做网站工具网络营销策略理论
  • 淘宝客网站免费模板下载百度云资源搜索网站
  • 网站死链是什么常见的网站推广方法有哪些
  • 手机上自己做网站网站的seo优化报告
  • 福州金山网站建设软文营销案例200字
  • 什么网站做电气自动化兼职志鸿优化设计