TF Slim
TF Slim 是一个基于 TensorFlow 核心构建的轻量级库,用于定义和训练模型。 TF Slim 可与其他 TensorFlow 低级和高级库(如 TF Learn)结合使用。 TF Slim 是包装中 TensorFlow 安装的一部分:tf.contrib.slim
。运行以下命令以检查 TF Slim 安装是否正常工作:
python3 -c 'import tensorflow.contrib.slim as slim; eval = slim.evaluation.evaluate_once'
TF Slim 提供了几个模块,可以独立挑选和应用,并与其他 TensorFlow 软件包混合使用。例如,在撰写本书时,TF Slim 有以下主要模块:
TF Slim 模块 | 模块说明 |
---|---|
arg_scope | 提供将元素应用于作用域下定义的所有图节点的机制。 |
层 | 提供几种不同的层,如fully_connected ,conv2d 等等。 |
损失 | 提供用于训练优化器的损失函数 |
学习 | 提供训练模型的函数 |
评测 | 提供评估函数 |
指标 | 提供用于评估模型的度量函数 |
regularizers | 提供用于创建正则化方法的函数 |
变量 | 提供变量创建的函数 |
网 | 提供各种预制和预训练模型,如 VGG16,InceptionV3,ResNet |
TF Slim 的简单工作流程如下:
- 使用细长层创建模型。
- 提供层的输入以实例化模型。
- 使用 logits 和标签来定义损失。
- 使用便利函数
get_total_loss()
获得全部损失。 - 创建一个优化器。
- 使用便利函数
slim.learning.create_train_op()
,total_loss
和optimizer
创建训练函数。 - 使用上一步中定义的便捷函数
slim.learning.train()
和训练函数运行训练。
笔记本 ch-02_TF_High_Level_Libraries
中提供了 MNIST 分类示例的完整代码。 TF Slim MNIST 示例的输出如下:
INFO:tensorflow:Starting Session.
INFO:tensorflow:Saving checkpoint to path ./slim_logs/model.ckpt
INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:Starting Queues.
INFO:tensorflow:global step 100: loss = 2.2669 (0.010 sec/step)
INFO:tensorflow:global step 200: loss = 2.2025 (0.010 sec/step)
INFO:tensorflow:global step 300: loss = 2.1257 (0.010 sec/step)
INFO:tensorflow:global step 400: loss = 2.0419 (0.009 sec/step)
INFO:tensorflow:global step 500: loss = 1.9532 (0.009 sec/step)
INFO:tensorflow:global step 600: loss = 1.8733 (0.010 sec/step)
INFO:tensorflow:global step 700: loss = 1.8002 (0.010 sec/step)
INFO:tensorflow:global step 800: loss = 1.7273 (0.010 sec/step)
INFO:tensorflow:global step 900: loss = 1.6688 (0.010 sec/step)
INFO:tensorflow:global step 1000: loss = 1.6132 (0.010 sec/step)
INFO:tensorflow:Stopping Training.
INFO:tensorflow:Finished training! Saving model to disk.
final loss=1.6131552457809448
从输出中可以看出,便捷函数slim.learning.train()
将训练输出保存在指定日志目录中的检查点文件中。如果重新开始训练,它将首先检查检查点是否存在,并且默认情况下将从检查点恢复训练。
在撰写本文时,TF Slim 的文档页面在以下链接中被发现为空:https://www.tensorflow.org/api_docs/python/tf/contrib/slim。 但是,可以在以下链接的源代码中找到一些文档:https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/contrib/slim。
我们将使用 TF Slim 来学习如何在后面的章节中使用预训练的模型,如 VGG16 和 Inception V3。