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_connectedconv2d等等。
损失 提供用于训练优化器的损失函数
学习 提供训练模型的函数
评测 提供评估函数
指标 提供用于评估模型的度量函数
regularizers 提供用于创建正则化方法的函数
变量 提供变量创建的函数
提供各种预制和预训练模型,如 VGG16,InceptionV3,ResNet

TF Slim 的简单工作流程如下:

  1. 使用细长层创建模型。
  2. 提供层的输入以实例化模型。
  3. 使用 logits 和标签来定义损失。
  4. 使用便利函数get_total_loss()获得全部损失。
  5. 创建一个优化器。
  6. 使用便利函数slim.learning.create_train_op()total_lossoptimizer创建训练函数。
  7. 使用上一步中定义的便捷函数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。

results matching ""

    No results matching ""