我正在将图像插入到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有关的东西?
答案 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
}
}
}
可以更简单地解决您的问题。