
神经网络
文章平均质量分 95
oio328Loio
这个作者很懒,什么都没留下…
展开
-
S03: 1.1 Autograd 自动求导
笔者手写了简单的深度学习框架,这个小项目源于笔者学习pytorch的过程中对autograd的探索。项目名称为kitorch。该项目基于numpy实现,代码的执行效率比cpu的pytorch要慢。尽然如此,我想对于初学者来说,有兴趣的同学还是可以看一下的。本项目代码见github。第一章 基于Autograd的Tensor类1.1 Autograd 自动求导本章是《手写深度学习框架》的第一...原创 2019-12-04 11:05:02 · 558 阅读 · 1 评论 -
S02: 手写深度学习框架-MNIST例子
笔者手撸了简单的深度学习框架,这个小项目源于笔者学习pytorch的过程中对autograd的探索。项目名称为kitorch, 意思是给 kid toy torch。由于学习自pytorch,笔者尽量使kitorch的 API接口风格与pytorch保持一致。本篇文章展示一个MNIST的例子:import numpy as npimport kitorch as ktfrom kitorc...原创 2019-10-25 18:11:32 · 1959 阅读 · 0 评论 -
S01: 手写深度学习框架
手写深度学习框架本项目代码见github本系列博客提纲:一、基于Autograd的Tensor类1.1、Autograd 自动求导1.2、基于Autograd构建Tensor类1.3、实现Tensor的四则运算、矩阵乘法1.4、实现Tensor的sum、mean函数1.5、实现几种激活函数1.6、其他函数的实现二、NeuralNetwork类2.1、Module类的实现三、...原创 2019-10-24 14:35:09 · 865 阅读 · 0 评论 -
神经网络学习(十五)神经网络学习到了什么
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。这一节,我们看看到底神经网络学习到了什么。原本是要对卷积神经网络进行研究的,但是卷积神经网络的训练太慢了,我们就以BP网络为例,简单探寻一下吧。那么,我们如何去探寻一个神经元学习到了什么呢?我们可以这样做:定义一个神经元的激活度,然后找到可以最大化激活这个神经元的输入 xxx,通过 xxx ...原创 2018-04-01 13:23:34 · 1254 阅读 · 0 评论 -
神经网络学习(十二)卷积神经网络与BP算法
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。DNN基本计算流程1、 首先计算输出层的 δLδL\delta^L:δL=∂C∂aL⊙σ′(zL)(BP1)(BP1)δL=∂C∂aL⊙σ′(zL){\delta ^L} = \frac{{\partial C}}{{\partial {a^L}}} \odot \sigma '\le...原创 2018-03-26 22:13:52 · 15654 阅读 · 2 评论 -
神经网络学习(十三)卷积神经网络的MATLAB实现
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。卷积神经网络回顾上一节,我们简单探讨了卷积神经网络的反向传播算法,本节我们着手实现了一个简单的卷积神经网,在此之前先以最基本的批量随机梯度下降法+L2正则化对对卷积神经网络的反向传播算法做一个很简单回顾。需要确定参数有:小批量数据的大小mmmCNN模型的层数 LLL 和所有隐...原创 2018-03-27 16:08:28 · 68731 阅读 · 254 评论 -
神经网络学习(十八)循环神经网络(RNN)的正向和反向传播算法梳理
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。回顾前面五小节,我们简单学习了卷积神经网络(CNN)反向传播算法的推导,然后我们自己实现了一个浅层卷积神经网络。卷积神经网络在本系列中先告一段落,我们开始学习循环神经网络的相关知识。本系列的主旨是基础学习,大致了解各个神经网络的基本原理。至于更深的应用,我们留待以后学习。正向传播...原创 2018-04-03 17:01:26 · 2697 阅读 · 0 评论 -
神经网络学习(十四)卷积神经网络TensorFlow实现
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。说明上一节,我们简单实现了一个卷积神经网络,本节我们采用TensorFlow实现手写字的识别。本节代码参考自《TensorFlow实战》。实现首先载入 MNIST 数据,并创建默认的 Interactive Session:import tensorflow as t...原创 2018-03-29 13:13:59 · 856 阅读 · 0 评论 -
神经网络学习(十六)经典卷积神经网络-ResNet(1)
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。 这一节我们来学习下经典的卷积神经网络-ResNet。ResNet在2015年比赛中一举获得了 ImageNet分类、ImageNet 检测、ImageNet 定位、COCO 检测、COCO 定位的五个项目的冠军。而且 Deep Residual Learning for Image Rec...原创 2018-04-19 21:50:47 · 1509 阅读 · 0 评论 -
神经网络学习(十一)卷积神经网络初识
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。三个基本概念卷积神经网络(Convolutional Neural Network)采用三种基本概念:局部感受野(local receptive fields),共享权值(shared weights)和池化(pooling,也有称为混合,或者subsample,下采样)。让我们逐个看下...原创 2018-03-20 10:37:01 · 1971 阅读 · 0 评论 -
神经网络学习(三)反向(BP)传播算法(1)
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。几个定义我们首先给出网络中权重的清晰定义。我们使用 wljkwjklw^l_{jk} 表示从 (l−1)th(l−1)th(l-1)^{th} 层的第 kthkthk^{th} 个神经元到 lthlthl^{th} 层第 jthjthj^{th} 个神经元的权重。例如,下图给出了网络中第二层...原创 2018-03-13 10:38:50 · 2027 阅读 · 0 评论 -
神经网络学习(二)过拟合
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。过拟合假如,我们需要拟合一组二维数据。利用这组数据我们训练两个模型:一个线性模型和一个具有12个自由参数的多项式模型,如下图所示那,我们该相信哪一个模型呢?没有经过任何一个点的线性模型,还是那个经过了所有数据点的多项式模型呢?如果再添加一些数据,我们就可以清楚地看到哪一个模型更好。显然,...原创 2018-03-07 13:10:10 · 2086 阅读 · 0 评论 -
神经网络学习(四)反向(BP)传播算法(2)-Matlab实现
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。回顾上一小节我们讨论了BP算法的推导,如果我们采用均方误差作为代价函数,那么4个基础方程如下: δL=(aL−y).∗σ′(zL)(BP1)(BP1)δL=(aL−y).∗σ′(zL){\bf{\delta }}^L = (a^L-y) .* \sigma'({\bf{z}}^L)\t...原创 2018-03-15 11:20:04 · 4512 阅读 · 4 评论 -
神经网络学习(五)优化方法:激活函数
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。 主要参考了几篇博文:几种常见的激活函数、几种常用激活函数的简介、ReLu(Rectified Linear Units)激活函数 和 The Activation Function in Deep Learning 浅谈深度学习中的激活函数 激活函数下面几个激活函数的公式1....原创 2018-03-15 16:40:14 · 3776 阅读 · 0 评论 -
神经网络学习(六)MNIST手写字识别 --- Matlab实现
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。MNIST数据MNIST 数据集作为入门数据集, 很多教程都有所介绍。我们这里利用的数据是从neural networks and deep learning教程获得到。我们将⽤按照该教程相同的数据分割方法,将60,000个图像的 MNIST 训练集分成两个部分:⼀部分包含50,000个...原创 2018-03-15 20:49:40 · 7249 阅读 · 31 评论 -
神经网络学习(七)MNIST手写字识别 --- Python实现
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。说明上一节,我们介绍了MNIST手写字的Matlab实现,本节我们看看它的一个简单的Python实现(警告:博主是Python小白),本节代码是参考了 Michael Nielsen的neural networks and deep learning相关代码基础上完成的。博主用的Pyth...原创 2018-03-17 10:46:57 · 1961 阅读 · 1 评论 -
神经网络学习(八)优化方法:交叉熵代价函数
回顾上一节完成了BP神经网络的Python实现,并稍微改进了分类效果。下面是三层网络 [784,30,50,10],mini_batch_size = 10, eta = 3.0 的结果,识别率基本保持在96.5%-97.0%,多次实验识别率也不能在提高了。下面继续进行学习,学习其他的优化方法。问题我们通常是在犯比较严重的错误时学习的较快。但是人工神经元在其犯错较大的情况很难学...原创 2018-03-17 22:37:15 · 1556 阅读 · 2 评论 -
神经网络学习(一)感知机
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。1、基本概念感知机是最早研究的也是最简单的一类人工神经元,是学习其他复杂神经网络必须要研究的基础类型。感知机有若干个二进制输入和一个二进制输出:人工神经元是源于对生物神经元的研究(注以下提及神经元将特指人工神经元,当指生物神经元则用全称),从功能上...原创 2018-03-04 09:59:40 · 2550 阅读 · 3 评论 -
神经网络学习(九)优化方法:规范化
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。规范化本节,我们会讨论一种最为常用的规范化(regularization)手段——有时候被称为权重衰减(weight-decay)或者L2规范化(regularization)。L2规范化的想法是增加一个额外的项到代价函数上,这个项叫做规范化项。下面是\规范化的的交叉熵代价函数:C=−1...原创 2018-03-18 10:31:37 · 2890 阅读 · 0 评论 -
神经网络学习(十)浅层BP神经网络总结
系列博客是博主学习神经网络中相关的笔记和一些个人理解,仅为作者记录笔记之用,不免有很多细节不对之处。MNIST识别率能否再提高我的这一阶段目标是在学习完浅层BP神经网络的相关知识时,可以将手写字的识别率达到98%。在前面的几次实验中,MNIST手写字的识别率始终未达到98%以上,这样的结果是有些让人沮丧的。今天进过艰苦奋斗,多次尝试之后终于将MNIST手写字的识别率提高到了98%以...原创 2018-03-19 11:02:15 · 2075 阅读 · 4 评论