机器学习AI算法工程   公众号:datayx


由 MXNet 创始人李沐大神、Aston Zhang 等人所著的交互式书籍《动手学深度学习》推出了在线预览版,面向在校学生、工程师和研究人员,旨在帮助读者从入门到深入、动手学习深度学习,即使是零基础的读者也完全适用。


当时我们需要向用户解释Apache MXNet在那时的新接口Gluon。不幸的是,我们并没有找到任何一个资源可以同时满足以下几点需求:


  1. 包含较新的方法和应用,并不断更新;
  2. 广泛覆盖现代深度学习技术并具有一定的技术深度;
  3. 既是严谨的教科书,又是包含可运行代码的生动的教程。


那时,我们在博客和GitHub上找到了大量的演示特定深度学习框架(例如用TensorFlow进行数值计算)或实现特定模型(例如AlexNet、ResNet等)的示例代码。这些示例代码的一大价值在于提供了教科书或论文往往省略的实现细节,比如数据的处理和运算的高效率实现。如果不了解这些,即使能将算法倒背如流,也难以将算法应用到自己的项目中去。此外,这些示例代码还使得用户能通过观察修改代码所导致的结果变化而快速验证想法、积累经验。因此,我们坚信动手实践对于学习深度学习的重要性。然而可惜的是,这些示例代码通常侧重于如何实现给定的方法,却忽略了有关算法设计的探究或者实现细节的解释。虽然在像Distill这样的网站和某些博客上出现了一些有关算法设计和实现细节的讨论,但它们常常缺少示例代码,并通常仅覆盖深度学习的一小部分。


另外,我们欣喜地看到了一些有关深度学习的教科书不断问世,其中最著名的要数Goodfellow、Bengio和Courville的《深度学习》。该书梳理了深度学习背后的众多概念与方法,是一本极为优秀的教材。然而,这类资源并没有将概念描述与实际代码相结合,以至于有时会令读者对如何实现它们感到毫无头绪。除了这些以外,商业课程提供者们虽然制作了众多的优质资源,但它们的付费门槛依然令不少用户望而生畏。


正因为这样,深度学习用户,尤其是初学者,往往不得不参考来源不同的多种资料。例如,通过教科书或者论文来掌握算法及其相关数学知识,阅读线上文档学习深度学习框架的使用方法,然后寻找感兴趣的算法在这个框架上的实现并摸索如何将它应用到自己的项目中去。如果你正亲身经历这一过程,你可能会感到痛苦:不同来源的资料有时难以相互一一对应,即便能够对应也可能需要花费大量的精力。例如,我们需要将某篇论文公式中的数学变量与某段网上实现中的程序变量一一对应,并在代码中找到论文可能没交代清楚的实现细节,甚至要为运行不同的代码安装不同的运行环境。


针对以上存在的痛点,我们正在着手创建一个为实现以下目标的统一资源:

  1. 所有人均可在网上免费获取;
  2. 提供足够的技术深度,从而帮助读者实际成为深度学习应用科学家:既理解数学原理,又能够实现并不断改进方法;
  3. 包含可运行代码,为读者展示如何在实际中解决问题。这样不仅直接将数学公式对应成实际代码,而且可以通过修改代码、观察结果而及时获取经验;
  4. 允许我们和整个社区不断快速迭代内容,从而紧跟仍在高速发展的深度学习领域;
  5. 由包含有关技术细节问答的论坛作为补充,使大家可以相互答疑并交换经验。


这些目标往往互有冲突:公式、定理和引用最容易通过LaTeX进行管理和展示,代码自然应该用简单易懂的Python描述,而网页本身应该是一堆HTML及配套的CSS和JavaScript。此外,我们希望这个资源可以作为可执行代码、实体书以及网站。然而,目前并没有任何工具可以完美地满足以上所有需求。


因此,我们不得不自己来集成这样的一个工作流。我们决定在GitHub上分享源代码并允许提交编辑,通过Jupyter记事本来整合代码、公式、文本、图片等,使用Sphinx作为渲染引擎来生成不同格式的输出,并使用Discourse作为论坛。虽然我们的系统尚未完善,但这些选择在互有冲突的目标之间取得了较好的折中。这很可能是使用这种集成工作流发布的第一本书。


书中所有的代码执行结果都是自动生成的,任何改动都会触发对书中每一段代码的测试,以保证读者在动手实践时能复现结果。


《动手学深度学习》TensorFlow 2.0/PyTorch实现_特征工程


包含code和docs两个文件夹(外加一些数据存放在data中)。其中code文件夹就是每章相关jupyter notebook代码(基于TensorFlow2);docs文件夹就是markdown格式的《动手学深度学习》书中的相关内容。


相关代码,获取方式:

关注微信公众号 datayx  然后回复 动手深度学习 即可获取。


目录

  • 简介
  • 阅读指南
  • 1. 深度学习简介
  • 2. 预备知识
  • 2.1 环境配置
  • 2.2 数据操作
  • 2.3 自动求梯度
  • 3. 深度学习基础
  • 3.1 线性回归

  • 3.2 线性回归的从零开始实现

  • 3.3 线性回归的简洁实现

  • 3.4 softmax回归

  • 3.5 图像分类数据集(Fashion-MNIST)

  • 3.6 softmax回归的从零开始实现

  • 3.7 softmax回归的简洁实现

  • 3.8 多层感知机

  • 3.9 多层感知机的从零开始实现

  • 3.10 多层感知机的简洁实现

  • 3.11 模型选择、欠拟合和过拟合

  • 3.12 权重衰减

  • 3.13 丢弃法

  • 3.14 正向传播、反向传播和计算图

  • 3.15 数值稳定性和模型初始化

  • 3.16 实战Kaggle比赛:房价预测

  • 4. 深度学习计算

  • 4.1 模型构造

  • 4.2 模型参数的访问、初始化和共享

  • 4.3 模型参数的延后初始化

  • 4.4 自定义层

  • 4.5 读取和存储

  • 4.6 GPU计算

  • 5. 卷积神经网络

  • 5.1 二维卷积层

  • 5.2 填充和步幅

  • 5.3 多输入通道和多输出通道

  • 5.4 池化层

  • 5.5 卷积神经网络(LeNet)

  • 5.6 深度卷积神经网络(AlexNet)

  • 5.7 使用重复元素的网络(VGG)

  • 5.8 网络中的网络(NiN)

  • 5.9 含并行连结的网络(GoogLeNet)

  • 5.10 批量归一化

  • 5.11 残差网络(ResNet)

  • 5.12 稠密连接网络(DenseNet)

  • 6. 循环神经网络

  • 6.1 语言模型

  • 6.2 循环神经网络

  • 6.3 语言模型数据集(周杰伦专辑歌词)

  • 6.4 循环神经网络的从零开始实现

  • 6.5 循环神经网络的简洁实现

  • 6.6 通过时间反向传播

  • 6.7 门控循环单元(GRU)

  • 6.8 长短期记忆(LSTM)

  • 6.9 深度循环神经网络

  • 6.10 双向循环神经网络

  • 7. 优化算法

  • 7.1 优化与深度学习

  • 7.2 梯度下降和随机梯度下降

  • 7.3 小批量随机梯度下降

  • 7.4 动量法

  • 7.5 AdaGrad算法

  • 7.6 RMSProp算法

  • 7.7 AdaDelta算法

  • 7.8 Adam算法

  • 8. 计算性能

  • 8.1 命令式和符号式混合编程

  • 8.2 异步计算

  • 8.3 自动并行计算

  • 8.4 多GPU计算

  • 9. 计算机视觉

  •  9.12 实战Kaggle比赛:图像分类(CIFAR-10)

  •  9.13 实战Kaggle比赛:狗的品种识别(ImageNet Dogs)

  • 9.11 样式迁移

  •  9.10 全卷积网络(FCN)

  • 9.8 区域卷积神经网络(R-CNN)系列

  • 9.9 语义分割和数据集

  •  9.7 单发多框检测(SSD)

  • 9.1 图像增广

  • 9.2 微调

  • 9.3 目标检测和边界框

  • 9.4 锚框

  • 9.5 多尺度目标检测

  • 9.6 目标检测数据集(皮卡丘)

  • 10. 自然语言处理

  • 10.1 词嵌入(word2vec)

  • 10.2 近似训练

  • 10.3 word2vec的实现

  • 10.4 子词嵌入(fastText)

  • 10.5 全局向量的词嵌入(GloVe)

  • 10.6 求近义词和类比词

  • 10.7 文本情感分类:使用循环神经网络

  • 10.8 文本情感分类:使用卷积神经网络(textCNN)

  • 10.9 编码器—解码器(seq2seq)

  • 10.10 束搜索

  • 10.11 注意力机制

  • 10.12 机器翻译


机器学习算法AI大数据技术

 搜索公众号添加: datanlp

《动手学深度学习》TensorFlow 2.0/PyTorch实现_深度学习_02

长按图片,识别二维码


深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

《动手学深度学习》TensorFlow 2.0/PyTorch实现_深度学习_03