神经网络|深度学习
神经网络与深度学习入门
[小G]
一个计算机技术爱好者
展开
-
13-反向传播法求梯度
文章目录反向传播法求梯度梯度下降求最小值反向传播法求梯度利用计算图求梯度是一种比较方便又快速的方法,如何利用计算图求梯度?先回忆一下计算图:以 z=x2+y2z=x^2+y^2z=x2+y2 为例:计算图以箭头和节点构成,正向传播时,得到的结果是 z=x2+y2z=x^2+y^2z=x2+y2反向传播时,得到的结果是:∂L∂z×2x\frac{\partial L}{\partial z}\times 2x∂z∂L×2x 和 ∂L∂z×2y\frac{\partial L}{\part原创 2020-08-02 00:10:36 · 2809 阅读 · 0 评论 -
12-梯度与梯度下降算法(末尾有图)
文章目录求梯度求最小值——梯度下降法求梯度先回忆求梯度的公式:假如 L=f(x,y,z)L = f(x,y,z)L=f(x,y,z)(∂L∂x,∂L∂y,∂L∂z...)(\frac{\partial L}{\partial x},\frac{\partial L}{\partial y},\frac{\partial L}{\partial z}...)(∂x∂L,∂y∂L,∂z∂L...)分别对x, y, z 求导:∂L∂x=f(x+h,y,z)−f(x−h,y,z)2h\fra原创 2020-08-01 14:56:03 · 511 阅读 · 0 评论 -
11-误差反向传播法(二)——层的实现
文章目录一、简单层的实现乘法层的实现加法层的实现二、激活函数层的实现ReLU层sigmoid层一、简单层的实现乘法节点对应的层称作乘法层;加法节点对应的层称为加法层。层的实现有2个共通的接口(或方法):farward():正向传播backward():反向传播乘法层的实现例:z=xyz = xyz=xyclass MulLayer: def __init__(self): self.x = None self.y = None def f原创 2020-07-26 16:40:41 · 320 阅读 · 1 评论 -
10-误差反向传播法(一)——计算图
误差反向传播法上一篇文章介绍的是用数值微分法计算梯度,但这种方法比较耗时间,接下来介绍新的梯度计算法:误差反向传播法。在此之前,先介绍计算图。一、计算图计算图用节点和箭头表示,节点表示某种运算(可以是加减乘除等简单计算,也可以是一个复合运算),箭头上是某些参与计算的数据。计算图分为正向传播和反向传播,下面这幅图,白色箭头是正向的,蓝色箭头是反向的。局部计算每个节点的计算只与当前节点及它的数据有关,各个节点的计算互不干扰。链式法则计算图的反向传播:假设存在 y = f(x)的计算,这个计原创 2020-07-25 23:58:42 · 1047 阅读 · 1 评论 -
9-神经网络的学习机制
文章目录一、损失函数均方误差交叉熵误差二、数值微分导数偏导数梯度梯度法一、损失函数均方误差E=12∑k(yk−tk)2E = \frac{1}{2} \sum_k(y_k - t_k)^2E=21k∑(yk−tk)2yky_kyk : 表示神经网络的输出数据tkt_ktk:神经网络的监测数据k:表示数据维度交叉熵误差E=−∑ktklog(yk)E = -\sum_k t_k log (y_k)E=−k∑tklog(yk)log 为以 e 为底的对数yky_原创 2020-07-24 22:34:33 · 475 阅读 · 0 评论 -
8-minist数据测试参数精度
文章目录一、数据读取二、神经网络推理处理三、批处理一、数据读取mnist.py有一个load_mnist()函数,调用这个函数按下述方式可以轻松读入MNIST数据。(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)这个函数原型为:load_mnist(normalize=True, flatten=True, one_hot_label=False)含有3 个 参 数。第 1原创 2020-07-22 23:17:53 · 1104 阅读 · 0 评论 -
7-mnist数据集下载及相关配置
mnist数据集下载及相关配置MNIST数据集是由0到9的数字图像构成的(下图)。训练图像有6万张, 测试图像有1万张,这些图像可以用于学习和推理。MNIST数据集的一般使用方法是,先用训练图像进行学习,再用学习到的模型度量能在多大程度 上对测试图像进行正确的分类。然后讲如何配置:先在D盘下新建一个文件夹:dataset(路径为 D:/dataset),然后进去新建一个txt文档,在这个文档上粘贴下面这段代码:# coding: utf-8try: import urllib.reque原创 2020-07-21 17:42:34 · 959 阅读 · 2 评论 -
6-三层神经网络与信号传递过程
现在我们来进行神经网络的实现。这里我们以下图的3层神经网络为对象,实现从输入到输出的(前向)处理。在代码实现方面,使用上一节介 绍的NumPy多维数组。巧妙地使用NumPy数组,可以用很少的代码完成 神经网络的前向处理。导入新符号如图所示,权重和隐藏层的神经元的右上角有一个“(1)”,它表示权重和神经元的层号(即第1层的权重、第1层的神经元)。此外,权重的右下角有两个数字,它们是后一层的神经元和前一层的神经元的索引号各层间信号传递的实现用数学公式表示为:{a1(1)=ω11(1)x1+ω1原创 2020-07-13 12:23:39 · 655 阅读 · 0 评论 -
5-多维数组的乘积
1. 多维数组多维数组就是“数字的集合”,数字排成一列的集合、排成 长方形的集合、排成三维状或者(更加一般化的)N维状的集合都称为多维数组。下面我们就用NumPy来生成多维数组,先从前面介绍过的一维数组开始。先熟悉几个函数:np.ndim(): 获取数组维数,返回一个 int 数据shape(): 获取数组形状,返回的是一个元组(tuple)>>> import numpy as np >>> A = np.array([1, 2, 3, 4])原创 2020-07-12 19:09:52 · 1285 阅读 · 0 评论 -
4-打开神经网络的大门
1. 神经网络的认识用图来表示神经网络的话,如下图所示。我们把最左边的一列称为 输入层,最右边的一列称为输出层,中间的一列称为中间层,有时也称为隐藏层。另外,也把 输入层 到 输出层 依次称为第0层、第 1层、第2层2. 激活函数激活函数是连接感知机和神经网络的桥梁。像感知机原理公式y={0(b+ω1x1+ω2x2≤0)(2.1)1(b+ω1x1+ω2x2>0)y=\begin{cases}0&(b+ω_1x_1+ω_2x_2\leq0)\\&&(2.1)原创 2020-07-11 19:47:21 · 197 阅读 · 0 评论 -
3-感知机的局限性与多层感知机
1. 异或门仅当x1或x2中的一方为 1时,才会输出1。实际上,用前面介绍的感知机是无法实现这个异或门的。为什么用感知 机可以实现与门、或门,却无法实现异或门呢?下面我们尝试通过画图来思考其中的原因。将或门的动作形象化。或门的情况下,当权重参数(b, w1,w2) = (−0.5, 1.0, 1.0) 时可以满足真值表条件。此时,感知机可用下图表示。图中,○表示0,△表示1;可以看出,只有在(x1,x 2) = (0, 0)时输出0,而在 (x1,x2) 为 (0,1原创 2020-07-11 17:30:16 · 3150 阅读 · 0 评论 -
2-实现感知机
用Python来实现刚才的逻辑电路。实现与门先定义一个接收 参数x1和x2的AND(与门)函数。def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 #设置参数 tmp = x1 * w1 + x2 * w2 if tmp <= theta: return 0 elif tmp > theta: return 1 #在函数原创 2020-07-10 15:57:59 · 190 阅读 · 0 评论 -
1-感知机认识
2.1 感知机是什么感知机接收多个输入信号,输出一个信号。感知机的信号只有“流/不流”( 1/0)两种取值。在本书中,0 对应“不传递信号”,1对应“传递信号”。x1、x2是输入信号, y是输出信号,w1、w2是权重(w是weight的首字母)。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过 了某个界限值时,才会输出1,这也称为“神经元被激活” 。这里将这个界 限值称为阈值,用符号θ表示。5. 感知机原创 2020-07-10 15:07:13 · 474 阅读 · 0 评论