安装
宿主机驱动
CUDA Toolkit 和 cuDNN 的安装
限定程序使用GPU
tnsorflow2
基础知识
python技巧
TensorFlow 模型建立与训练
示例代码
步骤
源代码
基础知识
示例代码
keras 预定义了卷积神经网络结构
实例代码
示例代码
动态规划 (Dynamic Programming DP)
自定义层
自定义损失函数和评估指标
示例
管理checkpoint
TensorBoard:训练过程可视化
数据集的构建和预处理
模型导出
分布式计算
单机 MirroredStrategy
多机 MultiWorkerMirroredStrategy
test GPU
基础操作
安装
从 TensorFlow 2.1 开始,pip 包 tensorflow 即同时包含 GPU 支持,无需通过特定的 pip 包 tensorflow-gpu 安装 GPU 版本。如果对 pip 包的大小敏感,可使用 tensorflow-cpu 包安装仅支持 CPU 的 TensorFlow 版本。
conda虚拟环境
宿主机驱动
测试:nvidia-smi
CUDA Toolkit 和 cuDNN 的安装
限定程序使用GPU
方法1
方法2
方法3
tnsorflow2
基础知识
前置知识
python 对象的属性
dir(对象)
vars(对象)
help(对象)
python技巧
Python 中可以使用整数后加小数点表示将该整数定义为浮点数类型。例如 3. 代表浮点数 3.0
zip()在python3中是一个生成器,
TensorFlow 模型建立与训练
keras 中两个比较重要的概念是是模型(Model)和层(Layer)。曾将各种计算流程和变量进行了封装,而模型则将各个层进行了组织和链接,并且封装成了一个整体,描述了如何将输入数据通过各个层以及运算而得到输出。需要调用模型的时候就需要:y=model(X)的形式就可以。keras中layers中预定义层,同时也允许我们自定义层。
示例代码
tensorflow2线性模型
步骤
源代码
CNN
基础知识
卷积神经网络(Convolutional Neural Network, CNN)是一种结构类似于人类或动物的 视觉系统 的人工神经网络,包含一个或多个卷积层(Convolutional Layer)、池化层(Pooling Layer)和全连接层(Fully-connected Layer)。
示例代码
keras 预定义了卷积神经网络结构
tf.keras.applications中有很多经典的卷积神经网络结构。VGG16、VGG19、ResNet、MobileNet等
默认的参数包括:input_shape 默认大小是2242243,3232 或7575有长款至少限制;include_top:在网络最后是否包含全连接层,默认是true;weights:预训练权值,默认是’imagenet‘即为当前模型载入在ImageNet数据集上预训练的权值。classes:分类数,默认1000,修改该参数需要include_top参数为True且weights参数为None。
model = tf.keras.applications.MobileNetV2()
实例代码
循环神经网络(RNN)
循环神经网络(Recurrent Neural Network, RNN)是一种适宜于处理序列数据的神经网络,被广泛用于语言模型、文本生成、机器翻译等。
示例代码
DRL 深度强化学习
强化学习 (Reinforcement learning,RL)强调如何基于环境而行动,以取得最大化的预期利益。结合了深度学习技术后的强化学习(Deep Reinforcement learning,DRL)更是如虎添翼。近年广为人知的 AlphaGo 即是深度强化学习的典型应用。
DRL中有两个新的概念:”智能体“和”环境“。智能体通过与环境的交互学习策略,从而最大化自己在环境中所获得的的奖励。
监督学习关注的是预测,那么强化学习关注的是决策。
动态规划 (Dynamic Programming DP)
基本思路:将一个问题分解为若干个结构相同的子问题。并保存已经解决的子问题的人答案。
最优子结构:一个最优策略的子策略也最优的。
无后效性:过去的步骤只能通过当前的状态影响未来的发展,当前是历史的总结。
数字三角形
从直接算法到迭代算法
示例:倒立摆
Keras Sequential/Functional API 模式建立模型
Keras 提供了 Functional API,帮助我们建立更为复杂的模型,例如多输入 / 输出或存在参数共享的模型。
使用keras Model的compile/fit 和evaluate方法训练和评估模型。
model.fit(data_loader.train_data, data_loader.train_label, epochs=num_epochs, batch_size=batch_size)
x :训练数据;
y :目标数据(数据标签);
epochs :将训练数据迭代多少遍;
batch_size :批次的大小;
validation_data :验证数据,可用于在训练过程中监控模型的性能。
print(model.evaluate(data_loader.test_data, data_loader.test_label))
自定义层、损失函数和评估指标
自定义层
重写全连接层
LinearLayer
自定义损失函数和评估指标
Tensorflow常用模块
模型保存和加载:save() 和 restore()
加载模型
总结
示例
管理checkpoint
管理Checkpiont
TensorBoard:训练过程可视化
实时查看参数变化情况
查看 Graph 和 Profile 信息
示例
数据集的构建和预处理
tf.data.Dataset类,提供了对数据集的高层封装。tf.data.Dataset由可迭代的访问元素组成。每个元素包含一个或多个张量。
使用于小数据集的方法:tf.data.Dataset.from_tensor_slices() ,构成一个大的张量。
数据集的预处理办法
Dataset.map(f):对数据集的每个元素应用函数f,得到一个新的数据集
Dataset.shuffle(buffer_size) :将数据集打乱
Dataset.batch(batch_size) :将数据集分成批次,即对每 batch_size 个元素,使用 tf.stack() 在第 0 维合并,成为一个元素;
TFRecord :TensorFlow 数据集存储格式
TFRecord 可以理解为一系列序列化的 tf.train.Example 元素所组成的列表文件,而每一个 tf.train.Example 又由若干个 tf.train.Feature 的字典组成。
写TFRecord文件
读TFRecord文件
部署
模型导出
SaveModel:与前面介绍的 Checkpoint 不同,SavedModel 包含了一个 TensorFlow 程序的完整信息:不仅包含参数的权值,还包含计算的流程(即计算图) 。当模型导出为 SavedModel 文件时,无需建立模型的源代码即可再次运行模型,这使得 SavedModel 尤其适用于模型的分享和部署。后文的 TensorFlow Serving(服务器端部署模型)、TensorFlow Lite(移动端部署模型)以及 TensorFlow.js 都会用到这一格式。
分布式计算
单机 MirroredStrategy
tf.distribute.MirroredStrategy 是一种简单且高性能的,数据并行的同步式分布式策略,主要支持多个 GPU 在同一台主机上训练。
strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])
多机 MultiWorkerMirroredStrategy
部署Docker 环境
Docker 是轻量级的容器环境,将程序放在虚拟的 “容器” 或者说 “保护层” 中运行,既避免了配置各种库、依赖和环境变量的麻烦,又克服了虚拟机资源占用多、启动慢的缺点。
拉取Tensorflow映像
GPU
test GPU
领取专属 10元无门槛券
私享最新 技术干货