红色石头的个人网站:

红色石头的个人博客-机器学习、深度学习之路​redstonewill.com

《深度学习》,又名“花书”。该书由三位大佬 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 撰写,是深度学习领域奠基性的经典教材,被誉为深度学习的“圣经”。

原书内容非常充实,接近 800 页。这本书内容很深很全面,但起点稍微高了一些,对数学理论基础知识要求的比较多。因此,读完之后,及时进行高度概括和经验总结是十分有帮助的。石头君最近在 GitHub 上发现一个关于花书各章摘要的项目,内容非常精炼,除了笔记的同时,部分章节还配备代码,值得推荐,我们一起来看一下。

该项目的名称是:Deep-Learning-Book-Chapter-Summaries,作者是 Aman Dalmia 和 Ameya Godbole 两位小哥。项目地址为:

dalmia/Deep-Learning-Book-Chapter-Summaries​github.com

主要内容

这份花书核心笔记主要涉及的章节包括:

  • ch02 线性代数
  • ch03 概率与信息理论
  • ch04 数值优化
  • ch07 深度学习正则化
  • ch08 深度模型中的优化
  • ch09 卷积网络
  • ch11 实践方法论
  • ch13 线性因子模型

笔记的形式是 .ipynb,便于在 Jupyter Notebook 上打开和观看。例如,我们来看一下第二章线性代数的笔记。

可见,Jupyter 笔记不仅包含了知识点的总结,也有相关代码。再来看第九章的卷积网络部分,配备了一些完整的图片处理代码。

import numpy as np
from scipy import signal
from scipy import misc
import matplotlib.pyplot as plt# %matplotlib inlineimg = misc.ascent()
kernel = np.random.randn(5,5)
# kernel = np.array([[0,-10,0,10,0],[-10,-30,0,30,10],[0,-10,0,10,0]])img = img.astype(np.float32)/255
orig_in = imgoffsetx = offsety = 20
shift_in = np.zeros(orig_in.shape)
shift_in[offsetx:,offsety:] = img[:-offsetx,:-offsety]rot_in = misc.imrotate(img, 90)
scale_in = misc.imresize(orig_in, 1.5)output1 = signal.convolve2d(orig_in, kernel, mode='same')
output2 = signal.convolve2d(shift_in, kernel, mode='same')
output3 = signal.convolve2d(rot_in, kernel, mode='same')
output4 = signal.convolve2d(scale_in, kernel, mode='same')

fig, axes = plt.subplots(2, 4, figsize=(14, 7))
ax_orig = axes[0,0]
ax_shift = axes[0,1]
ax_rot = axes[0,2]
ax_scale = axes[0,3]diff_orig = axes[1,0]
diff_shift = axes[1,1]
diff_rot = axes[1,2]
diff_scale = axes[1,3]ax_orig.imshow(output1, cmap='gray')
ax_orig.set_title('Original')
ax_shift.imshow(output2, cmap='gray')
ax_shift.set_title('Shifted')
ax_rot.imshow(output3, cmap='gray')
ax_rot.set_title('Rotated')
ax_scale.imshow(output4, cmap='gray')
ax_scale.set_title('Scaled')def shift(arr, offset):
output = np.zeros(arr.shape)
output[offset:, offset:] = arr[:-offset,:-offset]
return outputdef rotate(arr, angle):
return misc.imrotate(arr, angle)def resize(arr, scale):
return misc.imresize(arr, scale)diff_orig.hist(np.ravel(output1),bins=100)
diff_orig.set_title('Output histogram')
diff_shift.hist(np.ravel(np.abs(output2-shift(output1, 20))),bins=100)
diff_shift.set_title('Shift histogram difference')
diff_rot.hist(np.ravel(np.abs(output3-rotate(output1, 10))),bins=100)
diff_rot.set_title('Rotate histogram difference')
diff_scale.hist(np.ravel(np.abs(output4-resize(output1, 1.5))),bins=100)
diff_scale.set_title('Scale histogram difference')ax_orig.set_xticks([])
ax_shift.set_xticks([])
ax_rot.set_xticks([])
ax_scale.set_xticks([])ax_orig.set_yticks([])
ax_shift.set_yticks([])
ax_rot.set_yticks([])
ax_scale.set_yticks([])plt.tight_layout()
# plt.show()
plt.savefig('images/conv_equivariance.png')

对于池化层的代码示例:

import numpy as np
np.random.seed(101)from scipy import signal
from scipy import misc
import matplotlib.pyplot as plt
%matplotlib inlineimg = misc.ascent()
img = img.astype(np.float32)/255# The image is more interesting here
orig_in = img[-200:,-300:-100]
offsetx = offsety = 15
shift_in = img[-200-offsetx:-offsetx,-300-offsety:-100-offsety]
kernel1 = np.random.randn(5,5)
kernel2 = np.random.randn(5,5)
kernel3 = np.random.randn(5,5)def sigmoid(arr):
# Lazy implementation of sigmoid activation
return 1./(1 + np.exp(-arr))def maxpool(arr, poolsize, stride):
# Lazy looping implementation of maxpool
output_shape = np.floor((np.array(arr.shape)-poolsize)/stride)+1
output_shape = output_shape.astype(np.int32)
output = np.zeros(output_shape)
for x in range(output_shape[0]):
for y in range(output_shape[1]):
output[x,y] = np.max(arr[x*stride:x*stride+poolsize,y*stride:y*stride+poolsize])
return outputoutput1_1 = signal.convolve2d(orig_in, kernel1, mode='valid')
pool1_1 = maxpool(output1_1, 2, 2)
actv1_1 = sigmoid(pool1_1)
output1_2 = signal.convolve2d(actv1_1, kernel2, mode='valid')
pool1_2 = maxpool(output1_2, 2, 2)
actv1_2 = sigmoid(pool1_2)
output1_3 = signal.convolve2d(actv1_2, kernel3, mode='valid')
pool1_3 = maxpool(output1_3, 2, 2)output2_1 = signal.convolve2d(shift_in, kernel1, mode='valid')
pool2_1 = maxpool(output2_1, 2, 2)
actv2_1 = sigmoid(pool2_1)
output2_2 = signal.convolve2d(actv2_1, kernel2, mode='valid')
pool2_2 = maxpool(output2_2, 2, 2)
actv2_2 = sigmoid(pool2_2)
output2_3 = signal.convolve2d(actv2_2, kernel3, mode='valid')
pool2_3 = maxpool(output2_3, 2, 2)fig, axes = plt.subplots(4, 3, figsize=(10, 10))k1, k2, k3 = axes[0,:]
p1_1, p1_2, p1_3 = axes[1,:]
p2_1, p2_2, p2_3 = axes[2,:]
h1, h2, h3 = axes[3,:]k1.imshow(kernel1, cmap='gray')
k1.set_title('kernel1')
k2.imshow(kernel2, cmap='gray')
k2.set_title('kernel2')
k3.imshow(kernel3, cmap='gray')
k3.set_title('kernel3')
k1.set_xticks([])
k2.set_xticks([])
k3.set_xticks([])
k1.set_yticks([])
k2.set_yticks([])
k3.set_yticks([])p1_1.imshow(pool1_1, cmap='gray')
p1_1.set_title('pool1_1')
p1_2.imshow(pool1_2, cmap='gray')
p1_2.set_title('pool1_2')
p1_3.imshow(pool1_3, cmap='gray')
p1_3.set_title('pool1_3')
p1_1.set_xticks([])
p1_2.set_xticks([])
p1_3.set_xticks([])
p1_1.set_yticks([])
p1_2.set_yticks([])
p1_3.set_yticks([])p2_1.imshow(pool2_1, cmap='gray')
p2_1.set_title('pool2_1')
p2_2.imshow(pool2_2, cmap='gray')
p2_2.set_title('pool2_2')
p2_3.imshow(pool2_3, cmap='gray')
p2_3.set_title('pool2_3')
p2_1.set_xticks([])
p2_2.set_xticks([])
p2_3.set_xticks([])
p2_1.set_yticks([])
p2_2.set_yticks([])
p2_3.set_yticks([])h1.hist(np.ravel(np.abs(pool1_1-pool2_1)),bins=100)
h1.set_title('Pool 1 diff')
h2.hist(np.ravel(np.abs(pool1_2-pool2_2)),bins=100)
h2.set_title('Pool 2 diff')
h3.hist(np.ravel(np.abs(pool1_3-pool2_3)),bins=100)
h3.set_title('Pool 3 diff')plt.tight_layout()
# plt.show()
plt.savefig('images/pool_invariance.png')

博客笔记

该项目的作者还在自己的个人网站上发布了花书的精炼笔记,地址为:

https://medium.com/inveterate-learner/tagged/deep-learning

附加资源

除了这份花书重点章节摘要之外,石头君还推荐一份来自 Microsoft 计算机软件工程师 Jeff Macaluso 总结的关于花书的经验法则!

在线版阅读地址:

https://jeffmacaluso.github.io/post/DeepLearningRulesOfThumb/​jeffmacaluso.github.io

离线地址:

链接:https://pan.baidu.com/s/1eLlJy3xB6Hs0w_Q7bO536g

提取码:7q1d

希望这份资源对你有所帮助~

更多 AI 干货,请关注公众号:AI有道

深度学习stride_深度学习圣经“花书”各章摘要与笔记整理相关推荐

  1. 重磅!深度学习圣经“花书”核心笔记、代码发布

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...

  2. 真的!最难啃的《深度学习》圣经花书,居然新出版了视频课!

    [翻到文末免费学习<机器学习实战>,还能让你看尽CV和NLP完整技术路径以及前沿+经典论文篇目,助你构建深度学习知识框架] 在AI领域内,关于深度学习的课程资料有很多很多,而<深度学 ...

  3. 最难啃的《深度学习》圣经花书,居然新出版了视频课!

    [翻到文末免费学习<机器学习实战>,还能让你看尽CV和NLP完整技术路径以及前沿+经典论文篇目,助你构建深度学习知识框架] 在AI领域内,关于深度学习的课程资料有很多很多,而<深度学 ...

  4. 最新发布|深度学习必学“圣经”花书出视频课了!附带论文代码精读讲解!

    [翻到文末参与Pytorch框架福利!限时特惠!活动仅限2天!仅此一次!] 学人工智能Deep Learning必看书是什么? 如果你没听说过"花书",那么说明你对深度学习了解的还 ...

  5. OMG!最难啃的《深度学习》圣经花书,居然新出版了视频课!

    [翻到文末免费学习<机器学习实战>,还能让你看尽CV和NLP完整技术路径以及前沿+经典论文篇目,助你构建深度学习知识框架] 在AI领域内,关于深度学习的课程资料有很多很多,而<深度学 ...

  6. 深度学习stride_深度强化学习成名作——DQN

    前言:其实很早之前就想开始写写深度强化学习(Deep reinforcement learning)了,但是一年前DQN没调出来,没好意思写哈哈,最近呢无意中把打砖块游戏Breakout训练到平均分接 ...

  7. 2021疫情下Android技术人的宅家学习进阶指南!花了大价钱大厂内部买来的学习资料,爱看不看!(全网神级笔记整理)

    前言 2021年的春节假期即将临近,但是最近国内又出现了疫情反复的情况,很多省市都发出了隔离政策,这不禁让我们又开始担心2020年春节宅家一个月的场景会不会再次上演. 作为一名技术宅,虽说疫情对我的影 ...

  8. 重磅!花书《深度学习》,这份精炼笔记可能是最全面的

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...

  9. “花书” 《深度学习》经验法则--中文

    下面是"花书"经验法则的翻译版正文. TL:DR 尽可能使用迁移学习.否则,对于已经是广泛研究的问题,先从复制网络结构开始. 网络结构应该总是由实验和验证误差来确定. 更深(层多) ...

最新文章

  1. 任正非公开信深度解读:两年怎样改变了华为?
  2. linux centos7 docker 安装 oracle
  3. 编程马拉松大赛试题及代码(C++实现)
  4. 理科僧文科婶,高考前终于撕起来了!
  5. C# new和override的区别和用途
  6. 默认网关出现乱码_SpringCloudZuul服务网关
  7. 森林病虫防治系统 (七)
  8. perl中的文件句柄
  9. MFC之添加PNG,JPG图片
  10. sql小计汇总 rollup用法实例分析(转)
  11. Atititv2需求文档模板大纲目录 attilax总结
  12. 抖音服务器升级维护时间,抖音服务器升级要多久2021
  13. [转载]Altium Designer 破解,避免局域网冲突的ad9.ini
  14. python抓取网站数据并图形化显示(二)
  15. 5G牌照今日发放!!!
  16. Android的权限声明
  17. android微信换行,微信终于支持换行输入了,只需要一个简单的操作-excel自动换行...
  18. iOS 客户端 IM 以及列表 UI 框架
  19. 写html和css怎么分屏,如何使用CSS创建分屏(50/50)?
  20. Computer Shader

热门文章

  1. php自定义表单怎么导入excel,织梦dedeCMS将自定义表单数据导入到excel文档实现方法...
  2. 山东理工大计算机专业学什么科目,2020年山东理工大学计算机科学与技术学院880数据结构硕士研究生入学考试科目大纲...
  3. java直接对list使用sql语句_Java和SQL语句阶段考试错题集
  4. C语言怎样编程分子变化,C语言经典编程(一)
  5. android按钮点击变化,Android实现按钮点击效果(第一次点击变色,第二次恢复)...
  6. 【若依(ruoyi)】自定义的数据选择对话框
  7. mysql命令:为mysql命令指定字符集
  8. 网上选课系统java大作业_Java面向对象设计大作业——公选课选课系统
  9. java制表符_Java地位无可动摇的12个原因
  10. 计算机学院张旭豪,饿了么收购百度外卖,可以看出张旭豪硕士研究生是有多厉害!...