深度学习读书笔记--基于python的理论与实现
文章平均质量分 95
《深度学习入门--基于python的理论与实现》——斋藤康毅读书笔记
追寻远方的人
你的职责是平整土地,而非焦虑时光。
展开
-
第七章 卷积神经网络2(代码实现)
前面我们详细介绍了卷积层和池化层,本节我们就用Python来实现这两个层。也给进行实现的类赋予 forward 和 backward 方法,并使其可以作为模块使用。CNN中各层间传递的数据是4维数据(N,C,H,W),例如:数据的形状是(10, 1, 28, 28),则它对应10个高为28、长为28、通道为1的数据。7.1.2基于im2col的展开使用简单的程序实现卷积运算,估计要重复好几层的 for 语句。这样的实现有点麻烦,而使用 im2col 这个便利的函数进行简单的实现。im2col 是一个函数原创 2022-07-12 15:58:07 · 774 阅读 · 0 评论 -
第七章 卷积神经网络1(理论讲解)
CNN和前面介绍神经网络有很多相似的地方,不同的是CNN中新出现了卷积层(Convolution层)和池化层(Pooling层)。首先了解一下全连接层:相邻层的所有神经元之间都有连接,在前面的文章中使用的是Affine层实现了全连接层如果使用这个Affine层,一个5层的全连接的神经网络就可以通过下图所示的网络结构来实现。那么如果使用CNN,则网络结构图如下:【注】由上图知,CNN中新增了Convolution层和Pooling层。CNN的层的连接顺序是“Convolution - ReLU -(Pooli原创 2022-07-12 15:57:44 · 1062 阅读 · 6 评论 -
第六章 网络学习相关技巧5(超参数验证)
我们使用的数据集分成了训练数据和测试数据,训练数据用于学习,测试数据用于评估泛化能力。由此,就可以评估是否只过度拟合了训练数据(是否发生了过拟合),以及泛化能力如何等。然而,我们也需要对超参数设置各种各样的值以进行验证。因此,调整超参数时,必须使用超参数专用的确认数据。用于调整超参数的数据,一般称为验证数据(validation data)。我们使用这个验证数据来评估超参数的好坏。【注】训练数据用于参数(权重和偏置)的学习,验证数据用于超参数的性能评估。测试数据是为了确认泛化能力,要在最后使用(比较理想的原创 2022-06-24 06:37:10 · 222 阅读 · 0 评论 -
第六章 网络学习相关技巧4(正则化)
过拟合原因:• 模型拥有大量参数、表现力强。• 训练数据少例:为满足以上两个条件,制造过拟合现象。为此,要从MNIST数据集原本的60000个训练数据中只选定300个,并且,为了增加网络的复杂度,使用7层网络(每层有100个神经元,激活函数为ReLU)。目录结构如下:对于(funtions.py, gradient.py, layers.py,multi_layer_net.py optimizer.py, util.py)见前面博文,运行overfit_weight_decay.py结果如下。【注】由上原创 2022-06-19 17:24:39 · 238 阅读 · 0 评论 -
第六章 网络学习相关技巧3(Batch Normalization)
Batch Normalization(下文简称Batch Norm)是2015年提出的方法。Batch Norm虽然是一个问世不久的新方法,但已经被很多研究人员和技术人员广泛使用。优点:• 可以使学习快速进行(可以增大学习率)。• 不那么依赖初始值(对于初始值不用那么神经质)。• 抑制过拟合(降低Dropout等的必要性)。下图为使用了Batch Normalization的神经网络的例子Batch Norm,顾名思义,以进行学习时的mini-batch为单位,按mini-batch进行正规化。具体原创 2022-06-03 11:00:09 · 149 阅读 · 0 评论 -
第六章 网络学习相关技巧2(权重设置)
文章目录6.1简述6.2sigmiod权重初始值6.3relu权重初始值6.4案例:不同初始值比较6.4.1common文件夹6.4.2ch06文件夹6.4.2.1weight_init_compare.py6.4.3结果6.1简述在神经网络的学习中,权重的初始值特别重要。设定什么样的权重初始值,经常关系到神经网络的学习能否成功。且会影响到神经网络学习的速度。权值衰减:就是一种以减小权重参数的值为目的进行学习的方法。通过减小权重参数的值来抑制过拟合的发生。因此,我们在对权值进行初始化的时候,一开始便原创 2022-02-12 14:12:01 · 1457 阅读 · 0 评论 -
第六章 网络学习相关技巧1(最优路径梯度)
[toc]神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化(optimization)。在前面的代码实现中,为了找到最优参数,将参数的梯度(导数)作为了线索。使用参数的梯度,沿梯度方向更新参数,并重复这个步骤多次,从而逐渐靠近最优参数,这个过程称为随机梯度下降法(stochastic gradient descent),简称SGD。当一个人想从山顶前往山底,总会找到一条最快的路径,而如何选择这条路径,则是需要讨论的方法?求梯度方法的四种最优原创 2022-02-07 15:30:58 · 1621 阅读 · 0 评论 -
第五章 误差反向传播
文章目录5.1 计算图5.1.1用计算图求解5.1.2 局部计算5.1.3 为何用计算图解题5.2 链式法则5.2.1计算图的反向传播5.2.2 什么是链式法则5.2.3 链式法则与计算图5.3 反向传播(基于计算图)5.3.1 加法节点的反向传播5.3.2 乘法节点的反向传播5.4 反向传播的代码实现(基于计算图)5.4.1 乘法层的实现5.4.2 加法层的实现5.4.3 对于问题一的求解5.4.3 对于问题二的求解5.5 激活函数层的实现(基于计算图)5.5.1 ReLU层5.5.2 Sigmoid层5原创 2022-02-01 10:56:52 · 702 阅读 · 0 评论 -
第四章 神经网络的学习
文章目录4.1 损失函数4.1.1损失函数定义4.1.2损失函数的实现4.2 导数与梯度4.2.1导数4.2.2 偏导数和梯度4.3 梯度下降法4.3.1 梯度下降法数学表示:4.3.2 代码显示梯度下降法:4.3.3 学习率对迭代的影响4.5 学习算法的实现4.5.1 定义一个两层网络的类4.5.2 子函数4.5. 3 主函数上一个章节主要讲的是神经网络的前向传播,即在一直参数的条件下,计算出输出值,并且根据输出值的大小进行分类(对于分类问题)。本章主要讲通过梯度下降法,进行参数的更新神经网络中的原创 2022-01-11 16:18:58 · 335 阅读 · 0 评论 -
第三章 神经网络
文章目录3.1从感知机到神经网络3.1.1神经网络的例子3.1.2复习感知机3.1.3激活函数登场3.2激活函数3.2.1sigmoid函数3.2.2阶跃函数的实现3.2.3 阶跃函数的图形3.2.4 sigmoid函数的实现3.2.5 sigmoid函数和阶跃函数的对比3.2.6 非线性函数(♥)3.2.7 ReLU函数3.3多维数组的运算3.3.1多维数组3.3.2矩阵乘法3.3.3神经网络的内积3.4 三层神经网络的实现3.4.1符号确认3.4.2各层间信号传递的实现3.5输出层的设计3.5.1恒等函原创 2022-01-07 17:14:32 · 614 阅读 · 0 评论 -
第二章 感知机
文章目录2.1感知机是什么2.2简单的逻辑电路2.2.1与门(and gate)2.2.2与非门和或门2.3感知机的实现2.3.1与门感知机的实现2.3.2导入权重和偏置2.3.3使用权重和偏置的实现2.4感知机的局限性2.4.1异或门2.4.2线性和非线性2.5多层感知机2.5.1已有门电路组合2.6从非门到计算机2.7本章小结2.1感知机是什么感知机接收多个信号,输出一个信号。但是感知机的信号只有“流/不流”(1/0)两种。0对应“不传递信号”,1对“应传递信号”。其中x1、x2作为两个输入信号原创 2022-01-07 17:05:30 · 653 阅读 · 0 评论 -
第一章 python的入门
文章目录1.1 python的数据类型和算数计算1.1.1.算数计算1.1.2.数据结构1.1.3.变量1.1.4.列表1.1.5.字典1.1.6.布尔型(逻辑运算)1.1.7.if语句1.1.8. for 语句1.1.9. 子函数的定义与调用1.1.10. 定义类1.2 Numpy库1.2.1 导入numpy库1.2.2 生成numpy数组1.2.2 numpy数组的算数运算1.2.2 numpy的n维数组与运算1.2.2 数组的广播1.2.3 访问numpy数组元素的三种方法1.3 matplotlib原创 2022-01-05 18:40:42 · 815 阅读 · 0 评论