python列表没有显示完整的元素

时间:2015-04-23 13:37:42

标签: python list neural-network caffe

我正在将图像插入到Decaf中,并希望从6,7,8层中提取特征。第6和第7应该是4096维,第8应该是1000。

我假设生成的输出的功能类似于列表,并希望将每个元素记录在单独的文本文件中,如下所示:

def intoDecaf(image):
    img = misc.imread(image)
    fname = str(image)
    fname = fname.replace('.jpg','')
    print fname
    scores = net.classify(img,center_only=True)
    feat6 = net.feature('fc6_cudanet_out')
    feat7 = net.feature('fc7_cudanet_out')
    feat8 = net.feature('fc8_cudanet_out')

    f6name = fname+'-f6.txt'
    f7name = fname+'-f7.txt'
    f8name = fname+'-f8.txt'

    f6 = open(f6name,'w')
    f7 = open(f7name,'w')
    f8 = open(f8name,'w')

    for f in feat6:
        f6.write(str(f))
        f6.write('\t')
   # and the same for f7 and f8

f8文件正确有1000个文件,但f6和f7文本文件有如下内容:

[ -1.63451958  -8.0507412   -1.09678674 ...,  11.38702393   1.99127924
   4.76321936]  

中间的点就像那样。所有数字都发生了什么?那些点是什么意思吗?某种删节? 这是与decaf还是python有关的东西?

1 个答案:

答案 0 :(得分:1)

看起来feat6是一个NumPy数组。 如果是这样,而不是

f6name = fname+'-f6.txt'
f6 = open(f6name,'w')
for f in feat6:
    f6.write(str(f))
    f6.write('\t')
f6.close()

使用

import numpy as np

f6name = fname+'-f6.txt'
np.savetxt(f6name, feat6, delimiter='\t')

这不包括括号([]),但这通常更令人满意,因为它可以更轻松地解析数据。

当数组中的元素数超过str时,NumPy数组的threshold表示包含省略号,默认情况下NumPy设置为1000.您可以通过setting threshold to some higher number更改此内容:

import numpy as np
np.set_printoptions(threshold=10**6)

通过此更改,只要str(f)小于10 ** 6,f就会返回f.size的字符串版本而不带省略号。

虽然这解释了您看到省略号的原因,但我建议不要在np.set_printoptions使用np.savetxt,因为class Helper { class func hide() { let app = UIApplication.sharedApplication() if !app.statusBarHidden { app.statusBarHidden = true } } class func show() { let app = UIApplication.sharedApplication() if app.statusBarHidden { app.statusBarHidden = false } } } 可以更简单地解决您的问题。