【问题标题】:python list not showing full elementspython列表未显示完整元素
【发布时间】:2015-07-01 17:46:35
【问题描述】:

我正在将图像插入到 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 有关吗?

【问题讨论】:

  • 也许无论f 是什么,都有一个特殊的__str__ 实现,它“有用地”使用省略号缩短了它的表示。我想知道如果你尝试f6.write(f)f6.write(repr(f)) 会发生什么?

标签: python list neural-network caffe


【解决方案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')

这不包括方括号([]),但这通常更可取,因为它使解析数据更容易。


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

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

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

虽然这解释了您看到省略号的原因,但我不建议在此处使用 np.set_printoptions,因为 np.savetxt 可以更简单地解决您的问题。

【讨论】:

  • 效果很好!谢谢!我会在一小时内接受这个:)
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2021-04-02
  • 2018-01-04
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2021-11-14
相关资源
最近更新 更多