1

我已经使用 TensorFlow slim 模型 vgg 训练了一个分类模型,使用 CASIA(人脸识别数据集)作为训练数据集。我想通过使用 LFW 数据集来测试模型,这是一个人脸匹配任务。所以我需要提取像fc7/fc8这样的网络特征,而不是softmax层,并比较特征之间的距离,以确定它们是否是同一个人。如何提取苗条模型的特征?

这是训练代码的一部分。

import tensorflow as tf
from tensorflow.contrib.slim.python.slim.nets import vgg 
slim = tf.contrib.slim
FLAGS = tf.app.flags.FLAGS

def tower_loss(scope):
    images, labels = read_and_decode()
    with slim.arg_scope(vgg.vgg_arg_scope()):
        logits, end_points = vgg.vgg_16(images, num_classes=FLAGS.num_classes)
    _ = cal_loss(logits, labels)
    losses = tf.get_collection('losses', scope)
    total_loss = tf.add_n(losses, name='total_loss')
    return total_loss
4

2 回答 2

2

您可以尝试使用tf.get_default_graph().get_tensor_by_name("VGG16/fc16:0")要提取的特定特征的任何张量名称。

要验证您要提取的张量的名称,您可以尝试

for operation in graph.get_operations():
    print operation.values()

请记住放在:0名称的末尾,因为它们表明您要检索的项目是张量。

于 2017-05-24T18:40:34.220 回答
0

获取end_points苗条模型并提取特征。

于 2017-05-26T12:34:45.560 回答