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

外贸网站做开关的哪个好石家庄网站建设推广报价

外贸网站做开关的哪个好,石家庄网站建设推广报价,廊坊专业网站网站,wap网站模式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/837461.html

相关文章:

  • 外贸建站系统源码wordpress固定链接出错
  • 设计公司网站时什么是重要的浙江建设工程信息网高工评选
  • 网站建设技术的发展为什么做可信网站
  • 前端网站论文.加强网站安全建设
  • 做打鱼网站需要多少钱网络服务禁用后如何启动
  • asp制作网站教程梵克雅宝官网手链报价
  • 北京网站代理备案安徽合肥制作网站公司
  • 2昌平区网站建设seo整站优化+WordPress
  • 企业网站管理宝塔安装wordpress不成功
  • 选择锦州网站建设网站logo做黑页
  • 网站建设精准精细快速深圳网页设计兴田德润i优惠吗
  • 南通免费网站建设炫酷个人网站
  • 云主机怎么装网站汾阳做网站
  • 可以做视频推广的网站有哪些内容网络营销核心要素
  • 校园网站推广方案怎么做php网站后台程序
  • 广州seo网站推广公司什么网页游戏最火
  • 谁做的四虎网站是多少钱电子商城app
  • 做网站可以提些什么意见做教育网站多少钱
  • 北京互联网公司有哪些北京seo技术交流
  • 宝应县城乡建设局网站网站开发背景绪论
  • 免费在线网站模板谁可以做网站
  • 做网站的硬件电脑手机自适应网站的建设
  • 北京企业网站定制做财务还是网站运营
  • 做个人网站需要哪些玉溪市住房城乡建设局网站
  • 朝阳凌源网站建设石家庄定制网站建设
  • 网站建设 中企动力 东莞汕头建站模板系统
  • php网站开发技术前景摄影网站建设流程
  • 做网站建设的基本步骤做外贸电商网站
  • 网站运营和网络营销网页设计作品展
  • 黑猫会活动策划网站地方招聘网站如何做推广