Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow,如何看内部';水滴';,美国有线电视新闻网的回应_Python_Numpy_Caffe_Tensorflow - Fatal编程技术网

Python TensorFlow,如何看内部';水滴';,美国有线电视新闻网的回应

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)

我目前正在使用来自的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))
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()
取而代之。

谢谢您的回答!!这很有帮助