您的位置:首页 > 编程语言 > Python开发

深度学习笔记-第4章-《深度学习入门——基于Python的理论与实现》

2018-10-26 00:01 751 查看
版权声明:转载请告知征得同意。 https://blog.csdn.net/qq_42731466/article/details/83388502

这个书各位大佬都很熟悉,我就不多说了。这个系列的文章肯定不是很长,整个整合到
机器学习-笔记目录

深度学习笔记——《深度学习入门——基于Python的理论与实现》

第4章——神经网络的学习

e.g:机器学习中的特征是人为设定,而深度学习则不是。
红色为人参与,灰色无人参与

这个章节比较重点的地方,这里跟机器学习很类似的一个地方就是如何去衡量一个学习程度。
神经网络以某个指标去寻找最优权重参数,这就是损失函数,损失函数可以用任意函数,一般情况下用均方误差或者交叉熵

代码图1

跳过4.3的数值微分部分,直接说4.4的代码。
这节直接给了一个simplenet的例子,从例子来学习。这段会一步一步说。借助这个例子来谈4.3

实在找不到什么好工具来画这个图了,只能用CAD了,,原谅我。。。。
https://download.csdn.net/download/qq_42731466/10747534
上面的链接是图,需要补充或者扩展的自行下载。

因为这个代码不是一个文件,在多个文件里面跳转,这样清晰多了。。
主结构里面代码实际上只有三句,一句赋值分别是

x
t
的接受初始信息和正确解的标签,第二句是类的调用第三句是计算梯度并返回。
.
1.代码在
M
块开始(
Main
),
M
触发了内部的一个类
C1
class1
缩写),
net
simpleNet
实例化成为对象,并获得了
.W
属性。
2.
labmda
匿名函数这里只是申明。(注意:此时并没有调用
net
里面的方法)
3.
numerical_gradient
作为外部函数被调用,

3.1-进入外部模块

F1
,计算数值梯度,注意
np.nditer
是个迭代器返回索引,执行次数就是矩阵的大小。它的进行就是分别对初始化
.W
的权重进行梯度计算。

3.1.1——计算至

fxh1
的时候触发
f
lambda
匿名函数,此时又触发
C1
,实例化的
net
loss
方法被调用

3.1.1.1——计算至

.predict
调用自身的方法,
x
W
进行矩阵乘法得到1X3的矩阵,赋值给
z
,此时得到的是接收的信息x和权重W的内积,意味3个神经元分别接收的信息总和。
3.1.1.2—— 触发外部函数
F21
softmax
,对z采集的三组信息进行概率分配。
注意:
这里有一个技巧性处理

3.1.1.3—— 触发外部函数
F22
cross_entropy_error
,如果接收的
y
矩阵维度是1则会触发
reshape
进行调整,调整为(1*t.size),成为一个2维矩阵,注意矩阵大小为2和维度大小为1X2是不同的维度。
argmax()
方法按行返回最大值对应的索引。最后计算并返回交叉熵给
C1

3.1.2——计算至

fxh2
再次触发
f
3.1.1
相同
3.1.3——
grad[idx]
计算的就是数值梯度,这里是一维,很方便。
it.iternext()
对索引进行一次递增,否则一种计算第一个索引对应值的梯度。

3.2——最后返回梯度值

4.显示结果
.
所以归根结底,这套代码就是计算梯度的。

总体而言,前面1,2步都是在做预处理,真正执行入口在

F1
,然后根据
softmax
返回概率矩阵,根据概率计算损失函数
cross_entropy_error
的梯度。返回梯度。

代码图2

问题
深度学习和机器学习的关系是什么?

补充:

P82-Q18,感知机收敛定理?如何理解“通过有限次数的学习,线性可分问题是可解的”?
P82-Q18,深度学习和机器学习的本质区别?
P83-Q19,在计算机视觉领域所说的特征量指的是什么?SIFT、SURF、HOG指的是什么?
P83-Q20,转化成向量使用SVM、KNN分类器是什么意思,分类器本身是什么意思?
P84-Q21,什么是过拟合?
P95-Q24,中心差分是如何减小误差的?

更新
2018.10.27. ——更新至109/119,还缺少一个代码图以及分析。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐