深度学习 (PyTorch) - ND101 v7
该代码库包含与 Udacity 的 深度学习 v7 纳米学位课程 相关的材料。它由多个关于深度学习主题的教程笔记本组成。在大多数情况下,这些笔记本会引导您实现卷积网络、循环网络和 GAN 等模型。此外,还涉及了诸如权重初始化和批量归一化等主题。
该代码库还包含了一些用于纳米学位课程的项目笔记本。在课程中,这些项目由真人(Udacity 审核人员)进行审核,但这里提供了初始代码。
目录
教程
神经网络简介
- 神经网络简介:学习如何实现梯度下降并将其应用于学生录取数据的模式预测。
- 使用 NumPy 进行情感分析:Andrew Trask 将引导您构建一个情感分析模型,用于预测文本是正面还是负面。
- PyTorch 入门:学习如何在 PyTorch 中构建神经网络,并使用预训练网络进行最先进的图像分类。
卷积神经网络
- 卷积神经网络:可视化组成卷积神经网络的各层输出。学习如何定义并训练 CNN,以分类 MNIST 数据,这是一个在机器学习和深度学习领域广为人知的手写数字数据库。同时,定义并训练一个 CNN 以分类 CIFAR10 数据集中的图像。
- 迁移学习:在实践中,大多数人不会在巨大的数据集上训练自己的网络;他们会使用 预训练 网络,如 VGGnet。在这里,您将使用 VGGnet 来帮助分类花卉图像,而无需从头开始训练端到端网络。
- 权重初始化:探索网络权重初始化如何影响性能。
- 自编码器:使用 PyTorch 中的前馈和卷积网络构建图像压缩和去噪模型。
- 风格迁移:使用预训练网络从图像中提取风格和内容特征。根据 Gatys 等人的论文 Image Style Transfer Using Convolutional Neural Networks 实现风格迁移。为迭代创建自己的目标风格迁移图像定义合适的损失函数!
循环神经网络
- 循环网络入门(时间序列和字符级 RNN):循环神经网络能够利用数据序列的信息,如文本中的字符序列;学习如何在 PyTorch 中实现这些模型以完成各种任务。
- 嵌入层 (Word2Vec):实现 Word2Vec 模型,以找到用于自然语言处理的词语语义表示。
- 情感分析 RNN:实现一个循环神经网络,能够预测电影评论的文本是正面还是负面。
- 注意力机制:实现注意力机制并将其应用于注释向量。
生成对抗网络
- MNIST 上的生成对抗网络:在 MNIST 数据集上训练一个简单的生成对抗网络。
- 批量归一化:学习如何通过批量归一化提高训练速率和网络稳定性。
- 深度卷积 GAN (DCGAN):实现一个 DCGAN,以基于街景门牌号码 (SVHN) 数据集生成新图像。
- CycleGAN:实现一个 CycleGAN,该网络旨在从无配对和无标记的数据中学习;使用训练好的生成器将图像从夏季转换为冬季,反之亦然。
模型部署(使用 AWS SageMaker)
- 所有练习和项目笔记本 可以在链接的 Github 仓库中找到,适用于模型部署课程的内容。学习如何使用 AWS SageMaker 部署预训练模型。
项目
- 预测共享单车使用模式:使用 NumPy 实现一个神经网络以预测自行车租赁量。
- 狗品种分类器:使用 PyTorch 构建一个卷积神经网络,以将任意图像(甚至是人脸图像)分类为特定的狗品种。
- 电视脚本生成:训练一个循环神经网络,以生成类似于《宋飞正传》对话风格的脚本。
- 人脸生成:在 CelebA 数据集上使用 DCGAN 生成新的真实感人脸图像。
选修材料
- TensorFlow 入门:开始使用 TensorFlow 构建神经网络。
- Keras:学习使用 Keras 构建神经网络和卷积神经网络。
依赖
使用 Anaconda 配置和管理您的环境
根据 Anaconda 文档:
Conda 是一个开源的包管理系统和环境管理系统, 用于安装多个版本的软件包及其依赖项,并在它们之间轻松切换。它适用于 Linux、OS X 和 Windows 系统,最初是为 Python 程序设计的,但它可以打包和分发任何软件。
概述
使用 Anaconda 包括以下步骤:
- 在您的计算机上安装
miniconda
,选择适合您的操作系统的最新 Python 版本。如果您已经安装了conda
或miniconda
,您可以跳过此步骤并继续第 2 步。 - 创建并激活*一个新的
conda
环境。
* 每次您希望进行任何练习时,请激活您的 conda
环境!
1. 安装
下载与您系统匹配的最新版本的 miniconda
。
Linux | Mac | Windows | |
---|---|---|---|
64-bit | 64-bit (bash installer) | 64-bit (bash installer) | 64-bit (exe installer) |
32-bit | [32-bit (bash installer)][lin32] | 32-bit (exe installer) |