如何知道Tensorflow Slim图像模型的每个图层的名称?

时间:2018-06-06 06:31:16

标签: python tensorflow tensorflow-slim

我将从以下提供的预训练模型中微调一些图像模型:https://github.com/tensorflow/models/tree/master/research/slim

以下是微调脚本的模板:

$ DATASET_DIR=/tmp/flowers
$ TRAIN_DIR=/tmp/flowers-models/inception_v3
$ CHECKPOINT_PATH=/tmp/my_checkpoints/inception_v3.ckpt
$ python train_image_classifier.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=flowers \
    --dataset_split_name=train \
    --model_name=inception_v3 \
    --checkpoint_path=${CHECKPOINT_PATH} \
    # Please notice the 2 lines below
    --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits \ 
    --trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits

最后两行是我们想要微调的层,上面的例子仅适用于Inception模型。

我想知道我们如何知道InceptionV3/Logits这个图层的确切名称?如果我为ResNet做微调,我应该在模板中输入哪个名称?是否有正式的方法来获取网络图,以便了解所有图层名称?

1 个答案:

答案 0 :(得分:0)

当您使用slim加载模型时,您应该有两个变量:网络的输出张量和网络组件的字典(这是您正在寻找的)

这是一个简单的演示代码:

input_image = tf.placeholder('float32', [batch_size, image_size, image_size, 3])
net, end_points = inception.inception_v3(input_image)