目录
- 0. 简介
- 1. 安装
- 1.1 安装 CUDA 和 cuDNN
- 2. 数据集
- 2.1 使用 tensorflow_datasets 导入公共数据集
- 2.2 数据集过大导致内存溢出
- 2.3 加载 cifar10 数据时报错
- 3. 评价指标
- 3.1 实现 F1 socre、precsion、recall
- 4. 优化器
- 4.1 AdamW 优化器示例程序
- 4.2 tf.keras 1.x 在使用 learning rate decay 时不要使用 tf.train 内的优化器
- 5. 模型
- 5.1 模型复现
- 5.2 加载 AlexNet 预训练模型
- 5.3 循环训练模型导致 OOM
- 6. TensorFlow API 变化
- 5.1 TF 1.x 到 TF 2.0 API 变化,随机种子、动态分配显存
- 5.2 TF 2.1 API 变化
0. 简介
记录使用 tf.keras 时遇到的各种问题。
tf.keras 是 keras 的未来,keras 作为 TensorFlow 的高级 API,大大简化 TensorFlow 代码的编写过程。
Keras(单独的)、TensorFlow 1.x 和 TensorFlow 2.0 的 keras API 变化不大,手册可以通用。
tf.keras 快速入门:初学者的 TensorFlow 2.0 教程 | TensorFlow Core
1. 安装
1.1 安装 CUDA 和 cuDNN
【tf.keras】Linux 非 root 用户安装 CUDA 和 cuDNN
2. 数据集
2.1 使用 tensorflow_datasets 导入公共数据集
【tf.keras】tensorflow datasets,tfds
2.2 数据集过大导致内存溢出
【tf.keras】在 cifar 上训练 AlexNet,数据集过大导致 OOM
2.3 加载 cifar10 数据时报错
【tf.keras】ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:1977)
3. 评价指标
3.1 实现 F1 socre、precsion、recall
在整个数据集而不是单个 batch 上实现 F1 socre、precsion、recall 等评价指标:
【tf.keras】实现 F1 score、precision、recall 等 metric
4. 优化器
4.1 AdamW 优化器示例程序
【tf.keras】AdamW: Adam with Weight decay
4.2 tf.keras 1.x 在使用 learning rate decay 时不要使用 tf.train 内的优化器
【tf.keras】tf.keras使用tensorflow中定义的optimizer
5. 模型
5.1 模型复现
【tf.keras】tf.keras模型复现
(注意:在CPU上训练才能完全复现模型)
5.2 加载 AlexNet 预训练模型
【tf.keras】tf.keras加载AlexNet预训练模型
5.3 循环训练模型导致 OOM
【tf.keras】Resource exhausted: OOM when allocating tensor with shape [9216,4096] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
6. TensorFlow API 变化
5.1 TF 1.x 到 TF 2.0 API 变化,随机种子、动态分配显存
【tf.keras】TensorFlow 1.x 到 2.0 的 API 变化
5.2 TF 2.1 API 变化
TensorFlow 2.1 将 fit_generator(), evaluate_generator(), predict_generator() 等函数分别合并到 fit(),evaluate(),predict() 里。