我想在纤薄的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')
的结果是我想要的?
答案 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']
希望这有帮助!