深度学习进阶课程
多欢喜
漫漫长路,平凡一生
展开
-
‘float‘ object cannot be interpreted as an integer
今天写代码的时候遇到了新的问题:'float' object cannot be interpreted as an integer代码出错地方:for minibatch_index in range(num_training_batches):找到num_traininng_batches:num_training_batches = size(training_data)/mini_batch_size理论上感觉没有错误呀,在网络上找了一些其他资料发现原来是python3的问题,原创 2020-11-30 10:20:50 · 454 阅读 · 0 评论 -
深度学习进阶课程17---Convolution Nerual Network (CNN)算法
目前总体来说比较流行,表现非常好的算法:Convolution Nerual Network(CNN)举个例子:在手写数字识别集 MNIST上面,使用CNN,用gpu计算,deep network ,dropout,ensembles结果达到接近人肉眼识别水平:9967/10000 识别正确以下是误识别的图片:右上角是正确数字,右下角是计算机识别到的数字,仔细观察可以看到,计算机识别的准确率还是很好的,上面很多数字都很迷惑,肉眼都很有可能识别错误对于之前的神经网络,相邻两层所有的神经元都两两相原创 2020-11-29 20:31:13 · 205 阅读 · 0 评论 -
深度学习进阶课程16---用ReL解决Vanishing Gradient问题
上篇文章发现一个新的问题,越往外越接近输出层,学习效率比较高这篇文章来讨论一下如何解决这个问题Exploding gradient problem:修正以上问题:(1)初始化比较大的权重:比如w1=w2=w3=w4=100(2)初始化b,使σ′(zj)\sigma'(z_j)σ′(zj)不要太小比如为了让σ′\sigma'σ′最大(也就是=1/4),我们可以通过调节b,让z=0:b1=-100a0z1=100a0±100a0=0这种情况下:wjσ′(zj)w_j\sigma'(z_j原创 2020-11-29 16:00:43 · 475 阅读 · 0 评论 -
深度学习进阶课程15---深度神经网络中的难点
到目前为止,我们例子中使用的神经网络一共只有3层(一个隐藏层):我们用以上神经网络达到了98%的accuracy现在我们将以上网络扩展为更深层的神经网络:更深层的神经网络可以学习到不同抽象程度的概念:例如:图像中,第一层学到边角,第二层学到一些基本形状,第三层学到物体概念那么如何训练深度神经网络呢?难点:神经网络的不同层学习的速率显著不同,接近输出层学习速率比较合适时,前面的层学习太慢,有时被困住消失的gradient问题(vanishing gradient problem):impo原创 2020-11-25 16:19:04 · 520 阅读 · 0 评论 -
深度学习进阶课程14---神经网络参数hyper-parameters选择
我们到目前为止在神经网络中使用了好几个参数,hyper-parameters包括:学习率(learning rate):η\etaηRegularization parameters:λ之前只是设置了一些合适的值,如何来选择合适的hyper-parameters呢?例如:我们设置如下参数:隐藏层:30个神经元,mini-batch size:10,训练30个epochs,η=10.0\eta=10.0η=10.0,λ=1000.0\lambda=1000.0λ=1000.0代码如下:mpor原创 2020-11-24 22:10:48 · 829 阅读 · 0 评论 -
深度学习进阶课程13---实现提高版本的手写数字识别算法
之前初始化的方法:正态分布函数:N(0,1)import mnist_loader #下载数据模块import network2 #刚才实现好的networkimport matplotlib.pyplot as plttraining_data,validation_data,test_data=mnist_loader.load_data_wrapper()#net=network2.Network([784,30,10],cost=network2.CrossEntropyCost原创 2020-11-24 15:09:24 · 227 阅读 · 0 评论 -
深度学习进阶课程12---初始化网络(正态分布)
这篇文章写一下如何初始化神经网络结构来看一下正态分布如果均值=0,方差=1,则属于标准正态分布均值:mean,average,x_bar=sum(xi,i=1…n)/n,一组数据它的中心趋势的衡量标准差:standard deviation,sigma=sqrt(sum((xi-x_bar)^2,(i=1…n))/(n-1))方差:标准差^2=方差举个例子:X=(x1,x2,x3,x4,x5)=1,2,3,4,5x_bar=(1+2+3+4+5)/5=15/5=3sigma=((1-3)原创 2020-11-23 20:29:07 · 1361 阅读 · 0 评论 -
深度学习进阶课程11---减少overfitting的方法Regularization和Dropout
这篇文章继续写一下Regularization,写一下L1 regularization公式如下:跟L2 regularization相似,但不太一样,是对权重w的绝对值求和求偏导:sgn()跟w的符号有关,w大于0取1,w小于零取-1权重更新法则:比之前的L2更新法则:都是减小权重,方法不同:L1减少一个常量,L2减少权重的一个固定比例会带来以下影响:如果权重本身很大,L1减少的比L2少很多如果权重本身很小,L1减少的更多L1倾向于集中在少部分重要的连接上当w=0,偏导数原创 2020-11-23 16:41:23 · 201 阅读 · 0 评论 -
深度学习进阶课程10---减少Overfitting的方法Regularization
上一篇文章写了增加训练数据集的量是减少overfitting的途径之一,其实减小神经网络的规模,也可以减小overfitting,但是更深层更大的网络潜在有更强的学习能力。我们可以采用另一种方式来减少overfitting,即使对于固定的神经网络和固定的训练集,我们仍然可以减少,Regularization最常见的一种Regularization:L2 Regularization(weight decay)新的损失函数 Regularized cross-entropy:比之前的cross-e原创 2020-11-22 16:00:50 · 229 阅读 · 0 评论 -
深度学习进阶课程09---softmax和overfitting
这篇文章写一下Softmax和Overfitting的概念Softmax是另一种类型的输出层方程:(1)和之前的sigmoid一样:(2)和之前的sigmoid不同:Softmax函数分母是把所有神经元的输入值加起来当最后一行z增大时,a也随之增大,其他a随之减小事实上,其他a减小的值总是刚好等于最后的a增加的值,总和为1不变Softmax的输出每个值都是大于等于0,而且总和等于1,所以可以认为是概率分布容易描述,可以认为输出的分类等于每个可能分类标签的概率(如P(a(x))=3 for原创 2020-11-19 20:56:47 · 176 阅读 · 0 评论 -
深度学习进阶课程08---cross-entropy损失函数
这篇文章写一下能否对cost function进行一些优化,目标方程:cross-entropy函数我们的理想情况是让神经网络学习更快假设简单模型:只有一个输入,一个神经元,一个输出简单模型:输入为1时,输出为0神经网络的学习行为和人脑差的很多,开始学习很慢,后来逐渐增快为什么?学习慢可以推出偏导数值很小计算偏导数:回顾之前学习的Cost函数:对于一个x,y和单个神经元:分别对w和b求偏导数:回顾sigmoid函数:可以看到当神经元输出接近0和1时,曲线非常平缓原创 2020-11-18 19:15:47 · 385 阅读 · 0 评论 -
深度学习进阶课程07---backpropagation算法实现
这篇文章写一下如何在Python中实现backpropagation算法首先来回顾两个关键的公式:这是权重和偏向的更新法则,backpropagation算法其实就是在帮我们计算它们的偏导数先来看更新函数 def update_mini_batch(self, mini_batch, eta): """Update the network's weights and biases by applying gradient descent using backprop原创 2020-11-18 15:58:22 · 230 阅读 · 0 评论 -
深度学习进阶课程07---backpropagation算法
这篇文章来详细写一下backpropagation算法在1970年就被提出,1986年的David Rumehart,Geoffrey Hinton,Ronald Williams提出的论文才得到重视,可以解决神经网络中的学习Backpropagation核心解决的问题:先来设计几个标记:上下的3和2表示第三层第2个神经元,4表示第(3-1)=2层第4个神经元表示第2层的第3个神经元的bias表示第三层第一个神经元的activation function的值两步:(1)wa+b原创 2020-11-16 15:09:19 · 511 阅读 · 0 评论 -
深度学习进阶课程06---其他算法实现手写数字识别
上一篇文章我们用神经网络来识别手写数字,能不能换一种思路,通过平均灰度图来衡量呢?基本思路:把图片上所有的灰度图相加除以784,看测试集每一张图片跟训练集每一张图片最接近,就把该图片识别为多少代码:...原创 2020-11-15 17:33:28 · 181 阅读 · 0 评论 -
‘collections.defaultdict‘ object has no attribute ‘iteritems‘
error:‘collections.defaultdict’ object has no attribute ‘iteritems’源代码:for digit, n in digit_counts.iteritems():Python3中已经没有了iteritems()修改为items()for digit, n in digit_counts.items():原创 2020-11-15 17:11:42 · 1010 阅读 · 0 评论 -
深度学习进阶课程05---神经网络手写数字演示
这篇文章来总体演示一下如何实现手写数字演示核心代码 network"""network.py~~~~~~~~~~A module to implement the stochastic gradient descent learningalgorithm for a feedforward neural network. Gradients are calculatedusing backpropagation. Note that I have focused on making th原创 2020-11-15 16:32:34 · 212 阅读 · 0 评论 -
name ‘xrange‘ is not defined
新遇到的的bug:name ‘xrange’ is not defined源代码: for j in xrange(epochs):Python3中已经将range()与xrange()合并为range( )修改所有的xrange为range即可原创 2020-11-15 15:26:11 · 959 阅读 · 0 评论 -
object of type ‘zip‘ has no len()
error:object of type ‘zip’ has no len()源代码:print(len(training_data))找到training_data,在mnist_loader.py文件中training_data =zip(training_inputs, training_results)修改为list格式training_data =list(zip(training_inputs, training_results)nice...原创 2020-11-15 15:00:15 · 1387 阅读 · 0 评论 -
‘ascii‘ codec can‘t decode byte 0x90 in position 614: ordinal not in range(128)
error:‘ascii’ codec can’t decode byte 0x90 in position 614: ordinal not in range(128)修改:原代码:pickle.load(f)修改为:pickle.load(f,encoding=‘bytes’)原创 2020-11-15 14:54:51 · 254 阅读 · 0 评论 -
深度学习进阶课程04---随机梯度下降算法实现
这篇文章写一下如何实现梯度下降算法来实现一个简单的手写数字识别算法:我们用的数据集是之间介绍过的MINIST数据集:训练集(train):50000验证集(validation):10000测试(test):10000下面来写一下如何具体的实现梯度下降算法首先定义一个网络类:class Network(object): def __init__(self,sizes): self.num_layers=len(sizes) self.siz原创 2020-11-13 16:40:14 · 423 阅读 · 0 评论 -
一招解决从GItHub下载文件过慢问题
今天在GItHub下载源码文件,速度可谓感人!经常下载一点点就因为网络问题被迫停止了,几经摸索,发现可以去码云下载,速度会快很多1.打开码云gitee并注册登录2.创建仓库3.在新建仓库页选择 “导入已有仓库”4.复制你需要下载的git链接放到导入已有仓库中5、创建,然后下载速度比官网快多了...原创 2020-11-13 16:39:01 · 159 阅读 · 0 评论 -
深度学习进阶课程03---随机梯度下降算法
这是上一篇文章中的一幅图,因变量为C,自变量分别为v1和v2首先来看变化量:Cost函数的梯度向量(gradient vector)定义如下:由以上三个公式可以推出:为什么要写出这样一个公式,有什么好处呢,继续来看一下下一步我们设定:参数表示学习率把△v代入上面公式:△C<=0,所以C不断减小所以v的变化:再来回顾一下目标函数:是平均的cost现在我们套用刚才得到的方程,可以得到权重和偏向更新方程:对于每个训练实例x,都要计算梯度向量gradient ve.原创 2020-11-12 14:06:56 · 316 阅读 · 1 评论 -
深度学习进阶课程02---神经网络基本结构及梯度下降算法
这篇文章继续介绍神经网络基本结构及其中最重要的一个算法,梯度下降算法1.神经网络结构:以上是神经网络的基本结构,分别是输入层,隐藏层,输出层从输入层开始,每个神经元输入值*权重,求和后到隐藏层,再经过非线性转换等一系列变化,最终得到输出值。以上是深度学习中神经网络结构,模型更加复杂,往往有更多的hidden layers上图中不算输入层的话,是两个隐藏层,一个输出层,是三层的神经网络MultiLayer Perceptions(MLP)(多层神经网络结构),它的function其实是sigm原创 2020-11-11 11:37:43 · 547 阅读 · 0 评论 -
深度学习进阶课程01---手写数字(图像)识别
前面几篇文章写了深度学习一些基本算法和原理,从这篇文章开始学习进阶课程的一些算法。这篇文章写一下手写数字识别是如何通过神经网络来识别的。人脑识别图像:比如上面图片中的数字,我们很容易的可以看出这是504192,但其实人脑识别过程是非常复杂的。正如第一张图,我们从视网膜中接收图像,经过层层处理最终达到识别目的。人脑:大脑视觉皮层V1,包含140000000个神经元,数百亿个连接,还有V2,V3,V4,V5,人脑已经进化了几千年。如上图所示,对于图像我们可以认为它是一个矩阵,彩色图像可以认为是一原创 2020-11-11 10:24:36 · 698 阅读 · 0 评论