图灵系列——深度学习入门(基于python的理论与实践)

我要吹爆这本小红书,拿在手里小小一本,喜欢的不得了。

由于常年沉迷各种Internet noval,阅读速度比较快

周二下午拿到这本书,两个小时就看了三章,加上课多,看到周四上午终于看完了

所以做一下总结 (这本书真的很适合入门者,用的也是最简单的MNIST dataset

————————正文——————————

1.numpy 模块不匹配

先conda 安装了matplotlib


执行命令


看看都安装了什么包


看看都安装了什么包2


看看都安装了什么包3


一点小小的奇怪
conda 安装

就用conda uninstall进行了卸载


卸载中含有numpy旧版本

然后pip 安装


pip matplotlib带的模块

最后发现报错:

AttributeError: module 'numpy' has no attribute '__version__'

原因:

numpy 版本太高,换为1.31.1即可解决。

2. 章节内容

第一章 

主要介绍了python常用解释器(如算法计算,数据类型,变量,列表,字典,布尔型,if for语句等),并对numpy和matplotlib进行了简单介绍。Numpy是数组的天堂,matplotlib则是绘图的天堂,这两者也是这本书唯一调用的module

int, float,str等等


find list


Directory (useful thing


bool 也相当有用了


function

class 类:

class 类名:

    def__init(self,parameter1,parameter2...) # create function

    方法名(self, paremeter1,...)  # 1st method

   方法名(self, paremeter1,...)  # 2nd method

调用numpy和matplotlib

import numpy as np

import matplotlib.pyplot as plt

one case:


one case

image show:

import matplotlib.pyplot as plt

from matplotlib.image import imread

img = imread('lena.jpg')

plt.imshow(img)

plt.show()

第二章

主要围绕感知机(perception),小白熟知,可以用来做与非门、异或门等等。感知机是具有输入和输出的算法,给定一个输入后,将输出一个既定的值。感知机将权重和偏置设定为参数。单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。

第三章

这章是神经网络初步,其重要性质是它可以自动地从数据中学习到合适的权重参数。介绍了sigmoid、step等非线性激活函数。首先,两者“平滑性”不同,sigmoid函数输出随着输入发生连续性变化,而阶跃函数以0为界,输出发生急剧性变化。另外,sigmoid函数可以返回连续的实数值信号,step function 只能返回二元信号。两者共同点:输入小时,输出接近0;输入大时,输出接近1,且不管输入信号的数值,输出信号都在【0,1】之间。

注意:

激活函数必须使用非线性函数!!(避免 y=c*c*c*x 与 y= ax等同,无法发挥多层网络优势)

现在常用的是ReLU函数。。。

随后还涉及到numpy的一些skills


numpy 基础

神经网络:

W2 = np.array([0.1,0.4],[0.2,0.5],[0.3,0.6])

B2 = np.array([0.1,0.2])

A1 = np.dot(X,W1) +B1

Z1= sigmod(A1) #隐藏层的加权和(加权信号和偏置的总和)用a表示,被激活函数转化后的信号用z表示。

A2 = np.dot(Z1,W2) + B2

Z2 = sigmoid(A2)

#对于输出层,其所用的激活函数需要根据求解问题的性质决定。一般地,回归问题可以使用恒等函数,二元分类问题可以使用sigmoid函数,多元分类问题可以使用softmax函数。 

#恒等函数是将输入按原样输出,对于输入的信息,不加以任何改动地直接输出。

#softmax函数输出层的各个神经元都受到所有输入信号的影响。因为神经网络输出最大值的神经元位置不会变,因此在进行分类时,输出层的softmax函数可以省略。

load_mnist(normalize=True,flatten=True,one_hot_label=False)

normalize:是否进行归一化

flatten:是否将其输入图像变为一维数组

ont_hot_label:是否将标签保存为one-hot,即仅正确解标签为1,其他皆为0

对于输出层,回归问题中一般用恒等函数,分类问题中一般用softmax函数。

x_train.shape 60000,784

t_train.shape 60000,

x_test.shape 10000,784

t_test.shape 10000,

_______________

x.shape  (10000,784)

x[0].shape  (784,)

w1.shape (784,50)

w2.shape (50,100)

w3.shape (100,10)


!!!—————————————————————————

1. 需要把保存为Numpy数组的图像数据转换为PIL用的数据对象,因此需要通过image.fromarray()来完成。 

 img = Image.fromarry(np.uint8(img))

2. 进行显示图像时,需要通过reshape()方法的参数指定期望的形状,更改Numpy数组的形状。 

img=img.reshape(28,28)

3.np.argmax(x)取出数组中的最大值的索引。

p= np.argmax(x) 获取数组中最大值元素的索引

np.argmax(x,axis=1)

沿着第一维方向(以一维为轴)找到值最大的元素的索引(第0维对应第一个维度!!!对于矩阵,第0维是列方向,第1维是行方向)



4. range函数

range(start,end)会生成一个有start到end-1之间的整数构成的列表,若是像range(start,end,step),则是生成列表中的下一个元素会增加step指定的额数值。

————————————————————

小节:

1)神经网络中的激活函数使用平滑的sigmoid函数或RelU函数

2)通过巧妙地使用Numpy多维数组,可以高效地实现神经网络

3)分类问题,输出层的神经元的数量设置为要分类的类别数

4)输入数据的集合称为批,通过以批为单位进行推理处理,能够实行高速的运算。


第四章

奔入主题——神经网络

一些 points:

常用特征量包括SIFT、SURF、HOG,利用这些特征量将图像数据转换为向量,再利用SVM、KNN等分类器进行学习

(看起来是回过头来又全忘了,看书的时候得到了很多启发

mean squared error

cross entropy error

mini-batch:利用一部分样本数据来近似地计算整体。

network.numrical_gradient、network.gradient

!!!_______________

1)np.random.choice()能够从指定数字中随机选择想要的数字

2)np.log([np.arange(batch_size),t])生成一个从0到batch_size-1的数组。比方说,batch_size为5,np.arange(batch_size)可以生成一个Numpy数组[0,1,2,3,4],因为t中标签是[2,7,0,9,4]形式存储的,所以y[np.arange(batch_size),t]能抽出各个数据的正确解标签对应的神经网络的输出,即生成了Numpy数组的[y[0,2],y[1,7],y[0,2]...]

3) np.zeros_like(x)可以生成一个形状和x相同,所有元素都为0的数组。

———————————————————————

小节:

机器学习中使用的数据集分为训练数据和测试数据

利用数值微分,可以计算权重参数的梯度

第五章:误差反向传播(based computational graph

对常用加减乘数、softmax、ReLU等激活函数进行了反向

affine

!!!——————————

1)np.sum(): 对第0轴(以数据为单位的额轴,axis=0)方向上的元素进行求和。


这是由于

注:正向传播时,偏置会被加到每一个数据上,因此,反向传播时,各个数据的反向传播的值需要汇总为偏置的元素,偏置的反向传播会对各个数据的导数按元素进行求和。

2)神经网络进行的处理有推理和学习两个阶段,但推理一般不适用softmax层,只需要给出一个结果。

————————————————————

总结:

1)计算图的正向传播由局部计算构成,局部计算构成全局计算。

2)计算图的正向传播进行一般的计算,通过计算图的反向传播,可以计算各个节点的导数。

3)通过将神经网络的组成元素实现为层,可以高效地计梯度

4)通过比较数值微分和误差反向传播结果,可以确认误差反向传播发的实现是否正确(梯度确认)


第六章:与学习有关的技巧

参数更新方法:SGD、momentum、AdaGrad、Adam

对初始值的讨论,为了防止"权重均一化”或权重的对称结果,必须随机生成初始值。

Batch normalization,加速学习,使得初始化变化不敏感

regularization(overfitting、权值衰减、dropout

!!!——————————————————————————

1)各层的激活值的分布都要求具有适当的广度,因为通过在各层间传递多样性的数据,神经网络可以进行高效地学习。反之,如果传递的是有所偏向的数据,就会出现梯度消失或者表现力受限的问题,导致学习可能无法顺利进行。

2)batch normalization 的优点:

a)可以使学习快速进行(可以增大学习率)

b) 不依赖初始值

c) 抑制过拟合(降低dropout等必要性)

3)regularazation

a)过拟合问题

b)权值衰减

c)dropout:在学习过程中随机删除神经元的方法,训练时,随机选出隐藏的神经元,然后将其删除。被删除的神经元不再进行信号的传递。

4)超参数

逐渐缩小“好值”存在的范围是搜索超参数的一个有效的方法

——————————————————————

第七章:卷积神经网络

CNN(convolutional neural network

与神经网络相比,多了convalution 和pooling层

convalution:涉及到 padding(向周围数据填入固定的数据)、stride(应用滤波器的位置间隔)

pooling:涉及到 max 和 average  #max是从目标区域中取出最大值,average是计算目标区域的平均值。在图像识别领域,主要使用max池化

实现是通过: im2col (input_data, filter_h, filter_h, stride=1,pad=0) #把输入数据展开以适合滤波器

典型代表: LeNet(b祖)、AlexNet

1)LeNet:

进行手写数字识别的网络,具有连续的卷积层和池化层 (只抽选元素的子采样层),最后经由全连接层输出结果。

和现在的CNN相比,其采用sigmoid函数,现在主流用ReLU函数。

其使用子采样(subsampling)缩小中间数据的大小,现在主流是Max池化

2)AlexNet

叠有多个卷积层和池化层,最后经由全连接层输出结果。

和LeNet的差异

激活函数使用ReLU

使用进行局部正则化的LRN(Local response normalization)

使用Dropout

注意:

构成CNN基本模块的卷积层和池化层虽然有些复杂,但一旦理解了,之后就是如何使用它们的问题了。

在图像处理领域,几乎毫无例外会使用CNN,请扎实理解本章内容。

小结:

CNN在此前的全连接层的网络中新增了卷积层和池化层。

使用im2col函数可以简单、高效地实现卷积层和池化层。

通过CNN的可视化,可知随着层次变深,提取的信息愈加高级。

LeNet和AlexNet是CNN的代表网络

在深度学习中,大数据和GPU做出了很大贡献。

———————————————————————

第八章:深度学习

简述 ImageNet 、VGG、GoogLeNet、ResNet

!!!叠加小型滤波器来加深网络的好处是可以减少参数的数量,扩大感受野(receptive field,给神经元施加变化的某个局部空间区域)。并且通过叠加层,将ReLU等激活函数夹在卷积层中间,进一步提高了网络的表现力。这是因为向网络添加了基于激活函数的“非线性”表现力,通过非线性函数的叠加,可以表现更为复杂的东西。

ImageNet:

ImageNet是拥有超过100w张图像的数据集,并且每一张图像都关联了label。每年都会举办关于这个数量级的ILSVRC图像识别大赛。

其中一项是“classifiction"

VGG:

VGG是由卷积层和池化层构成的基础CNN,其特点是将有权重的层(卷积层或全连接层)叠加到16层(或19层),具有了深度(根据层的深度,有时也被成为VGG16 or VGG19)

需要注意,基于3×3的小型滤波器的卷积层运算是连续进行的,如“卷积层重叠2次到4次,再通过池化层将大小减半”

Googlenet:

不仅在纵向有深度,在横向上也有深度

ResNet:

具有比以前的网络更深的结构,导入了“快捷结构”调过了输入数据的卷积层,将输入x合计到输出,反向传播信号可以无衰减传递。

因为快捷结构只是原封不动地传递输入数据,所以反向传播时会将来自上游的梯度原封不动地传向下游。其重点是不对来自上游的梯度进行任何处理,因此,基于快捷结构,不用担心梯度会变小(或者变大),能够向前一层传递“有意义的深度”,通过此,之前因为加深层而导致的梯度变小的梯度消失问题就有望得到缓解。

GPU、分布式、位数精度的缩减,实现了精度学习的告诉化。

阐明方向: 物体检测、图像分割、图像标题生成

未来: 图像分割变化、图像生成、自动驾驶、强化学习(注意,这本书发表于 2016年,这些未来方向确实得到验证,而2019年过去也只有34天了。


_____________本书阅读 暂时over——————————————————

心语:经过两个月的疯狂学习,深度学习浪潮下,确实人人都能会....接下来,如何拉开差距呢?

9月: adapting enviroment and lessons (so difficult and hard to learn)

10月: mechine learning video learning+GAN paper+MICCAI+ICCV  (paper month)

11月:anaconda、pycharm、cuda、cuddnn、tensorflow、pythorch setting  & Fixed-point GAN 、 STARGAN train and test (pratice month)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容