版权归属

Original English language edition, entitled Deep Learning with Python by François Chollet,
published by Manning Publications. 178 South Hill Drive, Westampton, NJ 08060 USA. Copyright © 2018
by Manning Publications.
Simplified Chinese-language edition copyright © 2018 by Posts & Telecom Press. All rights reserved


Chapter 1 什么是深度学习

关于数据表征:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习

关于机器学习:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_02

关于深度学习(层间可视化):

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_03

之前的一个问题似乎有了答案:每个层的卷积核应当是有序不变的。

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_04

关于损失函数:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_05

关于反向传播和优化器(Optimizer):

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_06

深度学习的严冬:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_07

神经网络简史:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_08

SVM:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_09

决策树、随机森林、梯度增强机

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_10

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_11

硬件发展:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_12

本身性质-未来地位:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_13


Chapter 2 神经网络的数学基础

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_14

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_15

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_16

张量:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_17

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_18

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_19

向量是1轴的,向量构成矩阵是2轴的,矩阵构成3D张量是3轴的 5-3-3

ndim shape dtpye

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_20

张量切片:

>>> my_slice = train_images[10:100]
>>> print(my_slice.shape)
(90, 28, 28)

my_slice = train_images[:, 14:, 14:]

my_slice = train_images[:, 7:-7, 7:-7]

 

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_21

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_22

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_23

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_24

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_25

这里应该就是里面提到的NHWC(TensorFlow的默认格式)和NCHW(Theano的默认格式)。另外PyTorch比较有意思,其Numpy支持的是NHWC,但是Torch本身支持的是NCHW。当输入是三维图像时,喂给网络的(Dataloader出来的)应当是5维Tensor:NCDHW,其中D代表depth。以三维CT为例的话,batch size为1,patch size为512*512*620的话,NCDHW为(1, 1, 620, 512, 512)。C默认为1。

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_26

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_27

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_28

在实践中,当处理Numpy数组时,这些操作也可以使用优化后的内置Numpy函数,这些函数本身将繁重的工作委托给基本线性函数库的实现((BLAS,如果您安装了)。BLAS是低层次的、高度并行的、高效的张量处理例程,通常在Fortran或C语言中实现。

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_29

deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_30

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_31

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_32

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_33

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_34

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_35

反向传播:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_36

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_37


Chapter 3 神经网络入门

神经网络的三个最常见的用例:二分类、多分类和标量回归。

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_38

神经网络的主要组件:层、网络、目标函数和优化器。文章对几者进行了较好的总结:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_39

(层+层。。。构成网络;网络有自身初始化,并完成数据变换和结果预测;预测结果和目标真实值之间计算得到损失函数,损失值经优化器得到权重更新)

不得不说,在网络的输入输出形状这点上比PyTorch方便很多,对初学者有利,但是灵活性设计更倾向于PyTorch:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_40

Interesting(满纸荒唐言,一把辛酸泪):

deep learn with pytorch 中文版 pdf deep learning with python 中文版_神经网络_41

关于Keras:

Keras是一个模型级的库,可以实现与三大主要平台(后端引擎/后端)的对接:TensorFlow(Google开发)、Theano(University of Montreal MILA Lab开发)、CNTK(Microsoft开发)。

这种方式的优点:


开发过程中可以在两个后端之间无缝切换,这通常是很有用的。例如,对于特定任务,某个后端的速度更快,那么我们就可 以无缝切换过去。我们推荐使用 TensorFlow 后端作为大部分深度学习任务的默认后端,因为它

的应用最广泛,可扩展,而且可用于生产环境。



通过 TensorFlow (或 Theano 、 CNTK ), Keras 可以在 CPU 和 GPU 上无缝运行。在 CPU 上运行时,TensorFlow 本身封装了一个低层次的张量运算库,叫作 Eigen ;在 GPU上运行时,TensorFlow封装了一个高度优化的深度学习运算库,叫作 NVIDIA CUDA 深度神经网络库( cuDNN )。


deep learn with pytorch 中文版 pdf deep learning with python 中文版_损失函数_42

流程大致:

deep learn with pytorch 中文版 pdf deep learning with python 中文版_深度学习_43