阅读Caffe矢量提取的功能,重塑python中的矢量

时间:2016-06-15 14:16:22

标签: python arrays vector caffe

我已使用Caffe的教程从一组图片中成功提取功能。然后,我使用此代码将存储在leveldb格式的features文件中的结果转换为npy文件:

input_path='../examples/images/'
path='../examples/test/npy/'
files = os.listdir(input_path)

db = leveldb.LevelDB('../examples/_temp/features')

for k in range(len(files)): 
        datum = caffe_pb2.Datum.FromString(db.Get(str(k)))
        arr = caffe.io.datum_to_array(datum)
        file=files[k]
       out=np.save(path+file[0:len(file)-4],arr)

然而,从每个图像中提取的结果用向量arr表示,必须是4096-dim向量,这不是我的情况,如下所示

>>> arr
array([[[ 0.    ],
        [ 0.    ],
        [ 0.    ],
        ...,
        [ 0.    ],
        [ 0.    ],
        [ 0.199 ]]])
>>> arr.shape
(1, 4096, 1)

我不熟悉python。我需要在npy文件中将此数组保存为4096-dim,以便将其进一步存储在csv文件中,作为一行将由matlab读取。
如何将矢量arr转换为4096-dim?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望shape的{​​{1}}为4096,而不是arr? 在这种情况下,您可能希望使用flatten

(1, 4096, 1)

arr.flatten() 转换为1D。