Python TensorFlow,如何看内部';水滴';,美国有线电视新闻网的回应
我目前正在使用来自的VGG face Descriptor VGG人脸描述器使用VGG16和输出向量2622,一类名人的数量。 我真正需要的是最后一个完全连接的第二层的响应,它的大小是4096。 使用我上面提到的存储库中提供的代码Python TensorFlow,如何看内部';水滴';,美国有线电视新闻网的回应,python,numpy,caffe,tensorflow,Python,Numpy,Caffe,Tensorflow,我目前正在使用来自的VGG face Descriptor VGG人脸描述器使用VGG16和输出向量2622,一类名人的数量。 我真正需要的是最后一个完全连接的第二层的响应,它的大小是4096。 使用我上面提到的存储库中提供的代码 import vggface from pprint import pprint import tensorflow as tf input_placeholder = tf.placeholder(tf.float32, shape=(1, 224, 224, 3)
import vggface
from pprint import pprint
import tensorflow as tf
input_placeholder = tf.placeholder(tf.float32, shape=(1, 224, 224, 3))
network = vggface.VGGFace()
ses = tf.InteractiveSession()
network.load(ses,input_placeholder)
output = network.eval(feed_dict={input_placeholder:vggface.load_image('test/ak.png')})[0]
pprint(sorted([(v,network.names[k]) for k,v in enumerate(output)],reverse=True)[:10])
效果非常好,给了我最接近名人面孔的效果
结果:
[(13.686731, 'Aamir_Khan'),
(8.4711819, 'Adam_Driver'),
(8.0207777, 'Manish_Dayal'),
(7.2776313, 'John_Abraham'),
(6.8999376, 'Jacob_Artist'),
(6.5390964, 'Adam_Copeland'),
(6.4980922, 'Adrian_Paul'),
(6.4170547, 'Akshay_Kumar'),
(6.3718734, 'D.B._Woodside'),
(6.0774565, 'Ajay_Devgn')]
查看输出
变量,我看到2622 numpy ndarry。
但是我想要最后的第二个特征向量。。我怎样才能做到这一点
我已经查看了所有TensorFlow教程代码,但找不到类似的代码。
有了咖啡,我就
out = net.forward()
v = net.blobs['fc7'].data[0].copy()
这很简单。我怎样才能看穿TensorFlow中的“blob”?
使用numpy数组特征向量?Oh。。我想我找到了解决办法 只需删除TensorFace/vggface/init.py中的一些行
# (37): nn.ReLU
# (38): nn.Dropout(0.500000)
# (39): nn.Linear(4096 -> 2622)
#self.layers.append(('linear','39',2622,False))
# (40): nn.SoftMax
#self.layers.append(('softmax'))
看起来工作正常您可以使用session.run获取计算图中元素的当前值
layer7_values = session.run(layer7_tf, feed_dict={<your inputs>})
layer7\u values=session.run(layer7\u tf,feed\u dict={})
在本例中,session
是一个tf.session()
对象layer7_tf
是对TensorFlow模型中某个层的Tensor
输出的引用,而layer7_值
将包含给定输入的层值作为numpy数组
要获得
layer7\u tf
的句柄,您有两个选项。您可以修改TensorFace/vggface/init.py
以返回对相应层的引用;或者您可以浏览session.graph_def
结构,找到对应于该张量的节点的名称
,并将张量的字符串名称传递给session.run()
取而代之。谢谢您的回答!!这很有帮助