如何获取SLIM vgg16网络中某个图层的输出?

时间:2017-07-27 05:51:32

标签: python tensorflow

我想在纤薄的vgg16网中获得fc6层的输出,有没有什么好办法呢?

其实我找到了一个可能的解决方案,请帮我确认其正确性。

fc6层的输出实际上是Relu op的结果,即激活函数。我通过执行vgg_16/fc6/Relu找到它的名称tf.get_default_graph().get_operations()。那么,也许tf.get_default_graph().get_tensor_by_name('vgg_16/fc6/Relu:0')的结果是我想要的?

1 个答案:

答案 0 :(得分:1)

根据我从此Tensorflow代码中提取的图像分割(link),您可以在预定义的TF-Slim模型的一层提取输出:

    from tensorflow.contrib.slim import nets

    last_layer_logits, end_points = nets.vgg.vgg_16(img_batch, num_classes=num_classes)

    # examples
    pool4_features = end_points['vgg_16/pool4']
    fc8_features = end_points['vgg_16/fc8']

如果你在实际的vgg_16模型上使用另一个argscope,你应该在vgg_16 argscope之前添加它:

    fc8_features = end_points['my_great_model_argscope/' + 'vgg_16/fc8']

希望这有帮助!