2019-08-20 22:31:06 weixin_43216249 阅读数 201
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40478 人正在学习 去看看 唐宇迪

深度学习基础

深度学习发展历程

三起两落的深度学习:

在这里插入图片描述
1943年,由一位心理学家和一位数学家共同提出人工神经网络的基本概念,不过在当时并没有得到大众的重视。直到1957年感知器模型的提出,使得神经网络可以解决一些常规的线性分类和线性回归的任务,这引发了AI研究的热潮,但是在之后的研究中发现,它无法解决简单的异或问题(XOR),因此迎来了第一次低潮。虽然在1980年多层感知器解决了单层感知器的问题,但是对其网络参数的计算问题却成为了一个难点。但是在1986时,反向传播算法的提出解决了对少数层神经网络训练的问题,虽然依然存在一些问题,但是受限于但是的条件,通过反向传播能够简单,低效的对多层感知器进行学习,这个时候也就迎来了第二次高潮。同时,该算法的也存在缺陷,主要体现在两个方面,随着深度的加深,容易产生梯度的消失或者梯度爆炸,使得网络的参数没有得到实施的解决。除此之外呢,该算法容易陷入局部最优的问题,因此呢,便迎来了第二次低谷。而在1988年时,尽管当时提出了卷积神经网络,但是却并没有得到过多的重视。直到2006年,提出了深度学习,得益于时代的发展,人工神经网再次得到了发展,尤其在2012年,AlexNet算法的提出,引起瞩目,在此之后,各种优质算法层出不穷,作用于各个方面。

什么是人工神经网络

它属于机器学习的一种方法,而机器学习是解决人工智能问题的一种技术,最具有代表性的为深度学习。
作为一种网络,则拥有其节点,而在人工神经网络之中,称之为神经元。神经元与神经元存在一定关系。同时也组成了不同的层:输入层、输出层、隐藏层。在这里插入图片描述

什么是感知器

第一个具有完整算法描述的神经网络学习算法(称之为感知器学习算法:PLA)
任何线性分类或者线性回归问题都可以用感知器来解决。
在这里插入图片描述
为神经网络的一部分,而一个人工神经网络则是由多个感知器组成。
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network)

分类和回归

分类:通过网络得到离散的值,而这些值则代表着不同的类。
回归:通过网络得到连续的值。

什么是深度学习

含有多隐藏层的多层感知器就是一种深度学习结构。
在这里插入图片描述
因此神经元、感知器、神经网络与深度学习的关系如下图:
在这里插入图片描述

深度学习中的核心知识

前向运算与反向运算:

前向运算:

拿到一个深度学习网络结构之后,我们会利用该网络结构来完成一个任务,而通过该网络得到一个结果的过程就是前向运算(例如分类任务,回归任务等)。在该过程中,我们可以知道其网络结构,同时也需要知道其每一层的网络参数,而得出这些参数的过程就是方向传播的过程。而这个过程则是一个有监督的过程,可以根据样本而求出参数,之后再通过这些参数进行预测。简单来说即为:计算输出值的过程称为前向传播。(已知层的结构)

同时,这里引入了监督的概念:

有监督学习:给出的样本中的对应标签已经由人为的标注出的学习

无监督学习:只给出了样本,但是没有给出相应的标签。

半监督学习:一部分给出了标签,一部分没有标签。

网络结构的难点为:1.关于f函数是如何定义的;
2.函数中的相关参数的值分别是什么。
而前向运算,与反向运算则分别解决的相应的问题。

反向运算:

通常神经网络的结构是由人为决定的(称之为网络搭建过程)
而网络结构中的的参数求解的则是由计算机运算得出(称之为训练过程)

梯度下降算法

计算输出层结果与真实值之间的偏差来进行逐层调节参数的算法。

什么是导数

导数(一元函数)是变化率、是切线的斜率、是瞬时速度、是加速度。
在这里插入图片描述

什么是方向导数

函数在A点无数的切线的斜率的定义。每一个切线都代表一个方向的变化。(高维空间中)
在这里插入图片描述

什么是偏导数

多元函数降维时候的变化,比如二元函数固定y,只让x单独变化,从而看成是关于x的一元函数的变化来研究。
在这里插入图片描述

什么是梯度

函数在A点无数个变化方向中变化最快的那个方向。
在这里插入图片描述
在这里插入图片描述
因此可以理解为寻找最小值的过程。而梯度下降算法就是沿着导数下降的方法,进行参数更新。
在这里插入图片描述
途中阿尔法称之为学习率即为步长。

举一个非常简单的例子,如求函数f(x)=x^2的最小值。
利用梯度下降的方法解题步骤如下:
1、求梯度, 在这里插入图片描述
2、向梯度相反的方向移动 在这里插入图片描述 ,如下在这里插入图片描述
,其中, 在这里插入图片描述 为步长。如果步长足够小,则可以保证每一次迭代都在减小,但可能导致收敛太慢,如果步长太大,则不能保证每一次迭代都减少,也不能保证收敛。
3、循环迭代步骤2,直到 在这里插入图片描述的值变化到使得 在两次迭代之间的差值足够小,比如0.00000001,也就是说,直到两次迭代计算出来的 在这里插入图片描述 基本没有变化,则说明此时 在这里插入图片描述已经达到局部最小值了。
4、此时,输出 在这里插入图片描述 ,这个 在这里插入图片描述就是使得函数 在这里插入图片描述 在这里插入图片描述最小时的 在这里插入图片描述 的取值 。

因此序言选择合适的补偿/学习率。

局部最优解

在这里插入图片描述

迭代过程以及参数优化概念

神经网络参数训练是一个不断迭代的过程
在这里插入图片描述

参数更新:

参数优化的问题:
在这里插入图片描述
W为参数,X为输入值,WX则为预测值,Y为标签值。因此||WX-Y||得出的结果即为Loss,而在不断地优化地过程中则是不断缩小Loss,而不断更新参数。

深度学习发展迅猛的原因

三个因素:
在这里插入图片描述
而随着时代的发展,各个因素都得到了发展。

2019-09-03 10:14:55 joker_shy 阅读数 916
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40478 人正在学习 去看看 唐宇迪

异或问题

异或问题,简单说就是相同为0,相异为1
早在1969年时,感知机的流行,但还是不能解决异或问题,但在神经网络出现后,这个问题就被迎刃而解,加入隐藏层的神经网络就很好的解决了这个问题

数据如下

x = [[0, 0], [1, 0], [0, 1], [1, 1]]
y = [[0], [1], [1], [0]]

代码实现

import tensorflow as tf
import matplotlib.pyplot as plt

tf.set_random_seed(33)

x = [[0, 0], [1, 0], [0, 1], [1, 1]]
y = [[0], [1], [1], [0]]

X = tf.placeholder(tf.float32, shape=[None, 2])
Y = tf.placeholder(tf.float32, shape=[None, 1])

w1 = tf.Variable(tf.random_normal([2, 3]))
b1 = tf.Variable(tf.random_normal([3]))
w2 = tf.Variable(tf.random_normal([3, 1]))
b2 = tf.Variable(tf.random_normal([1]))

z1 = tf.matmul(X, w1) + b1
a1 = tf.sigmoid(z1)
z2 = tf.matmul(a1, w2) + b2
a2 = tf.sigmoid(z2)

cost = -tf.reduce_mean(Y * tf.log(a2) + (1 - Y) * tf.log(1 - a2))
cost_history = []

m = tf.cast(tf.shape(X)[0], tf.float32)
dz2 = a2 - Y
dw2 = tf.matmul(tf.transpose(a1), dz2) / m
db2 = tf.reduce_mean(dz2, axis=0)

da1 = tf.matmul(dz2, tf.transpose(w2))
dz1 = da1 * a1 * (1 - a1)
dw1 = tf.matmul(tf.transpose(X), dz1) / m
db1 = tf.reduce_mean(dz1, axis=0)

learning_rate = 3.8 * 10e-2
updata = [
    tf.assign(w2, w2 - learning_rate * dw2),
    tf.assign(b2, b2 - learning_rate * db2),
    tf.assign(w1, w1 - learning_rate * dw1),
    tf.assign(b1, b1 - learning_rate * db1)
]

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for step in range(10001):
        cost_var , _ = sess.run([cost, updata], feed_dict={X: x, Y: y})
        if step % 500 == 0:
            print('Step', step, 'Cost', cost_var)
            cost_history.append(cost_var)

    predict = sess.run(a2, feed_dict={X: x})

print('预测值为', predict)

plt.plot(cost_history[1:])
plt.show()

结果如下

Step 0 Cost 0.9873838
Step 500 Cost 0.36180282
Step 1000 Cost 0.059805408
Step 1500 Cost 0.027795581
Step 2000 Cost 0.017842356
Step 2500 Cost 0.013083072
Step 3000 Cost 0.010309634
Step 3500 Cost 0.008498434
Step 4000 Cost 0.00722454
Step 4500 Cost 0.006280598
Step 5000 Cost 0.005553428
Step 5500 Cost 0.0049763597
Step 6000 Cost 0.0045073307
Step 6500 Cost 0.004118765
Step 7000 Cost 0.00379156
Step 7500 Cost 0.0035123003
Step 8000 Cost 0.0032712156
Step 8500 Cost 0.003060991
Step 9000 Cost 0.0028760713
Step 9500 Cost 0.0027121357
Step 10000 Cost 0.002565823
预测值为 [[8.0882706e-04]
 [9.9655342e-01]
 [9.9778229e-01]
 [3.7732117e-03]]

在这里插入图片描述

2018-05-30 17:25:09 fengzhongluoleidehua 阅读数 1560
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40478 人正在学习 去看看 唐宇迪

深度学习笔记
深度学习(六十九)darknet 实现实验 Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffma

深度学习(六十八)darknet使用

深度学习(六十七)metal forge深度学习库使用

深度学习(六十六)生成模型、最大化似然、KL散度

深度学习(六十五)移动端网络MobileNets

深度学习(六十四)Faster R-CNN物体检测

深度学习(六十三)空间变换网络

深度学习(六十二)SqueezeNet网络设计思想笔记

深度学习(六十一)NNPACK 移植与实验

深度学习(六十)网络压缩简单总结

深度学习(五十九)mxnet移植至android

深度学习(五十八)caffe移植至mxnet

深度学习(五十七)tensorflow andorid yolo物体检测测试

深度学习(五十六)tensorflow项目构建流程

深度学习(五十五)tensorflow分布式训练

深度学习(五十四)图片翻译WGAN实验测试

深度学习(五十三)对抗网络

深度学习(五十二)变分贝叶斯自编码器(下)

深度学习(五十一)变分贝叶斯自编码器(上)

深度学习(五十)基于条件对抗网络的图片翻译

深度学习(四十九)Tensorflow提高代码效率笔记

深度学习(四十八)InfoGAN学习笔记

深度学习(四十七)DSD正则化训练方法

深度学习(四十六)Adversarial Autoencoders

深度学习(四十五)条件对抗网络

深度学习(四十四)变分贝叶斯自编码器(上)

深度学习(四十三)条件变分自编码器概述

深度学习(四十二)word2vec词向量学习笔记

深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建

深度学习(四十)caffe使用点滴记录

深度学习(三十九)可视化理解卷积神经网络(2.0)

深度学习(三十八)卷积神经网络入门学习(2.0)

深度学习(三十七)优化求解系列之(1)简单理解梯度下降

深度学习(三十六)异构计算CUDA学习笔记(1)

深度学习(三十五)异构计算GLSL学习笔记(1)

深度学习(三十四)对抗自编码网络-未完待续

深度学习(三十三)CRF as RNN语义分割-未完待续

深度学习(三十二)半监督阶梯网络学习笔记

深度学习(三十一)基于深度矩阵分解的属性表征学习

深度学习(三十)贪婪深度字典学习

深度学习(二十九)Batch Normalization 学习笔记

深度学习(二十八)基于多尺度深度网络的单幅图像深度估计

深度学习(二十七)可视化理解卷积神经网络

深度学习(二十六)Network In Network学习笔记

深度学习(二十五)基于Mutil-Scale CNN的图片语义分割、法向量估计

深度学习(二十四)矩阵分解之基于k-means的特征表达学习

深度学习(二十三)Maxout网络学习

深度学习(二十二)Dropout浅层理解与实现

深度学习(二十一)基于FCN的图像语义分割

深度学习(二十)基于Overfeat的图片分类、定位、检测

深度学习(十九)基于空间金字塔池化的卷积神经网络物体检测

深度学习(十八)基于R-CNN的物体检测

深度学习(十七)基于改进Coarse-to-fine CNN网络的人脸特征点定位

深度学习(十六)基于2-channel network的图片相似度判别

深度学习(十五)基于级联卷积神经网络的人脸特征点定位

深度学习(十四)基于CNN的性别、年龄识别

深度学习(十三)caffe之训练数据格式

深度学习(十二)从自编码到栈式自编码

深度学习(十一)RNN入门学习

深度学习(十)keras学习笔记

深度学习(九)caffe预测、特征可视化python接口调用

深度学习(八)RBM受限波尔兹曼机学习-未完待续

深度学习(七)caffe源码c++学习笔记

深度学习(六)caffe入门学习

深度学习(五)caffe环境搭建

深度学习(四)卷积神经网络入门学习

深度学习(三)theano入门学习

深度学习(二)theano环境搭建

深度学习(一)深度学习学习资料

图像处理
图像处理2

图像处理(二十三)基于调色板的图像Recoloring

图像处理(二十二)贝叶斯抠图

图像处理(二十一)基于数据驱动的人脸卡通动画生成

图像处理(十九)基于移动最小二乘的图像变形

图像处理(十四)图像分割(4)grab cut的图割实现

图像处理(十三)保刚性图像变形算法

图像处理(十二)图像融合(1)Seamless cloning泊松克隆

图像处理(十一)图像分割(3)泛函能量LevelSet、snake分割

图像处理(九)人物肖像风格转换

图像处理(十)基于特征线的图像变形-

图像处理(七)导向滤波磨皮

图像处理(六)递归双边滤波磨皮

图像处理(四)图像分割(2)测地距离Geodesic图割

图像处理(三)图像分割(1)Random Walks分割

https://blog.csdn.net/hjimce/article/details/50573444

主要阐述了一系列rcnn用到的算法以及目前发展流程,做一个综合的整理 rcnn->spp-net->fast-rcnn->faster-rcnn->yolo->ssd->R-FCN 小小搬运工,希望对大家有帮助 :)

https://blog.csdn.net/column/details/ym-alanyannick.html

2019-03-10 10:50:01 qq_24140919 阅读数 87
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40478 人正在学习 去看看 唐宇迪

最近刚开始学习深度学习相关知识,今天就先从理论开始整理这几天自己所学的深度学习相关笔记。

一、学习主要参考网址:

http://www.huaxiaozhuan.com/【AI算法工程师手册】

在看手册的过程中,对于不懂的参考的网址:

深度前馈网络:异或问题
https://blog.csdn.net/rookiew/article/details/77602598

代价函数(损失函数)、目标函数:
https://blog.csdn.net/lyl771857509/article/details/79428475

https://www.cnblogs.com/Belter/p/6653773.html?utm_source=itdadao&utm_medium=referral

反向传播算法:
http://www.cnblogs.com/charlotte77/p/5629865.html

二、深度学习基础知识

深度学习:计算机从经验中学习,以层次化的概念(concept)来理解世界。

深度学习 < 特征学习 < 机器学习 < AI

下图给出了不同AI系统中,不同部分的关联。

深度学习的成功的关键有三个:

  • 训练集大小的增长。
  • 硬件和软件的发展。包括更快的 CPU、通用的GUP发展、更大内存、更快的网络连接、更好的软件基础。
  • 算法优化。激活函数从sigmoid 转换到 ReLU 函数。它使得基于梯度下降的算法运行的更快。迭代网络的效率也更高了。

主要学习深度学习框架:Tensorflow,Keras

三、最简单的神经网络

神经网络基本示意图:

其中重要的就是激活函数:使得线性变为非线性。从而也就使得神经网络具有能理解任意输入变量间的非线性关系。

常见的激活函数有sigmoid、softmax、relu等,这里就不详细讲解了。

异或问题是最能体现神经网络的作用的。

什么是异或问题?

and:  (0,0) →  0;(0,1) →  0;(1,0) →  0;(1,1) → 1

nand:(0,0) →  1;(0,1) →  0;(1,0) →  0;(1,1) → 0

or:     (0,0) →  0;(0,1) →  1;(1,0) →  1;(1,1) → 1

xor:   (0,0) →  0;(0,1) →  1;(1,0) →  1;(1,1) → 0

其中and,nand,or都可以用线性的方法将其分类开来,即y = wx+b的形式将结果分为正负,正为1,负为0。但是xor却用线性的方法区分不开了。

示例:

                                    

          x1 and x2                                           x1 nand x2                                                  x1 or x2

                                          

                                                                             x1 xor x2

具体代码参见我的github:https://github.com/ly987/deep-learning/tree/master/xor_problem

四、代价函数与目标函数

关于代价函数:

线性回归中,最常用的是均方误差,具体形式为:

逻辑回归中,最常用的是代价函数是交叉熵,具体形式为:

学习过神经网络后,发现逻辑回归其实是神经网络的一种特例(没有隐藏层的神经网络)。因此神经网络中的代价函数与逻辑回归中的代价函数非常相似,具体形式为:

大多数神经网络采用最大似然准则,令代价函数为负的对数似然函数

至于为什么神经网络会采用对数来作为代价函数,我是在后边学习唐宇迪老师讲的深度学习入门视频课程中弄懂的。主要原因还是与激活函数有关。就拿softmax激活函数来说,它对输出的每个类别i的得分值进行处理,得到每个类别的概率,先使得得分值大的通过指数扩大很多倍,得分值为负的呢就变成很小的数;再使用归一化进行所有类别的值相加为1。这样处理后,再对本来正确分类的那个类别概率值进行更改,使得其越接近1代价越小,而log函数正好符合这一条件。

关于目标函数:

在迭代更新过程中,并不是代价越小越好,因为可能会导致过拟合。

所以这里会添加一个正则项来对w进行惩罚。

所以我们最终的优化函数是:

什么是过拟合?

我看到有两个解释:

1. 就比如,在更新权重w时,存在两组权重参数使得最后的代价一样,如w1(1,0,0,0)和w2(0.25,0.25,0.25,0.25),我们该选择哪一组权重参数呢?显然如果选择w1这组权重参数的话,就很容易造成过拟合,也就是在训练的这个样本计算出来的代价很小,但是如果换给测试样本,可能会使得代价变得很大,因为w1的意思就是第一个特征很重要,后面两个特征一点用都没有,这时我们就可以通过正则惩罚项使得神经网络选择w2这组权重。

2. 这里讲解得很直观,如下图:

在神经网络层越多的时候,样本的数据的代价就越小,但是也出现一个问题--过拟合,也就是如果出现一个错误的样本数据,它会很影响整个网络的模型,有时我们不需要它分得太过于正确了,这样的话,就太局限性了,界限太过于分明了。

神经网络中过拟合的一般解决办法

1. 添加正则化项:增大惩罚项,使得泛化能力好。

2. 全连接操作改为drop-out,即每层只选择某些神经元进行处理。

五、反向传播算法

反向传播:允许来自代价函数的信息通过网络反向流动,以便计算梯度。

关于反向传播,这个博客网址里有一个实例讲解,很清楚的讲了什么时反向传播,以及怎么计算等。这里就不详细讲解了。

http://www.cnblogs.com/charlotte77/p/5629865.html

2019-11-05 23:34:08 qq_43797817 阅读数 59
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    40478 人正在学习 去看看 唐宇迪

在这里插入图片描述
***1.***导入安装包

import numpy as np

***2.***定义激活函数及其导数

#激活函数
def tanh(x):
    return np.tanh(x)
#激活函数导数
def tanh_prize(z):
    return 1-tanh(z)**2

或者:

def sigmoid(x):
      return 1/(1+np.exp(-x))
  
#sigmoid导函数性质:f'(t) = f(x)(1 - f(x))
def s_prime(z):
      return np.multiply(sigmoid(z), 1.0-sigmoid(z))

***3.***输入输出数据

#输入数据
x=np.array([[1,0,0],[1,0,1],[1,1,0],[1,1,1]])
#理想输出数据
y=np.array([[0,1,1,0]]).T #或y=np.array([[0],[1],[1],[0]])

***4.***权重及学习率

#输入-隐藏1层权重
w1=2*np.random.random((3,3))-1
#隐藏1-隐藏2层权重
w2=2*np.random.random((3,3))-1
#隐藏2-输出层权重
w3=2*np.random.random((3,1))-1
#学习率 改变后训练后的输出变化
lr=0.5

***5.***正反向传播计算

for i in range(20000):
    #正向传播
    L1=np.dot(x,w1)
    z1=tanh(L1)
    L2=np.dot(z1,w2)
    z2=tanh(L2)
    L3=np.dot(z2,w3)
    z3=tanh(L3)
    
    error=y-z3#误差
    if(i%2000) == 0:#每2000次查看一次
       print("error:"+str(np.mean(error)))#打印误差
    
    #逆向传播
    L3_delta=error*tanh_prize(z3)#=(理想输出-实际输出)*z3经过激活函数导数
    L2_delta=L3_delta.dot(w3.T)*tanh_prize(z2)#=下层误差*层间权值*z2经过激活函数的导数
    L1_delta=L2_delta.dot(w2.T)*tanh_prize(z1)#=下层误差*层间权值*z1经过激活函数的导数
    
    #权重更新
    w3+=lr*z2.T.dot(L3_delta)
    w2+=lr*z1.T.dot(L2_delta)
    w1+=lr*x.T.dot(L1_delta)

6.打印训练输出

print("训练输出:")
print(z3)

7.判决输出

def judge(x):
    if(x>=0.5):
       return 1
    else:
       return 0
#根据提供的函数对指定序列做映射 map(函数,一个或多个序列)
print("判决结果:")
for i in map(judge,z3):
    print(i)

8.运行结果
在Spyder中运行结果

深度学习简史

阅读数 459

def neuron(w, x): return

博文 来自: lanchunhui
没有更多推荐了,返回首页