2017-05-16 47 views
0

我已經使用TensorFlow slim模型vgg,使用CASIA(一個人臉識別數據集)作爲訓練數據集訓練了一個分類模型。 我想通過使用LFW數據集來測試模型,它是一個面部匹配任務。所以我需要提取像fc7/fc8這樣的網絡特徵,而不是softmax圖層,並比較這些特徵之間的距離,以確定它們是否是同一個人。 如何提取纖細模型的特徵?如何從tensorflow細長模型VGG中提取特徵時正向運行?

這是培訓代碼的一部分。

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 

回答

0

您可以嘗試使用tf.get_default_graph().get_tensor_by_name("VGG16/fc16:0")或任何您要提取的特定特徵的張量名稱。

要驗證你提取張量的名字,你可以嘗試

記得把:0在名字的結尾,因爲他們表明你檢索該項目是一個張量。

0

獲取瘦身模特的end_points並提取特徵。