我有一个大小为301 x 4096的数组,我想为此计算VLAD向量。
我尝试使用
进行量化center, assignments = vlfeat.vl_kmeans(data,8)
但是会返回
ValueError:要解压缩的值太多
如果我将群集数量从8更改为2,则可以正常工作。 我也尝试了其他数字,但所有数字都返回了相同的ValueError。除了,当它设置为1时,它返回
ValueError:解包需要多于1个值
可能是因为它与我的数据中的样本数量有关吗?
答案 0 :(得分:0)
Github上提供了VLFeat的这个非官方Python接口的来源。
vl_kmeans
函数默认只返回centers
,因此只有一个值可以解压缩:
import numpy as np
import vlfeat
x = np.random.rand(10, 8)
centers = vlfeat.vl_kmeans(x, 3)
生成的centers
数组将具有(3, 8)
形状,即3个中心中每个中心的8维点。
如果要获取每个输入的分配,则必须将选项quantize
传递给vl_kmeans
功能。然后,该函数确实返回centers
和assignment
,这将按预期工作:
centers, assignments = vlfeat.vl_kmeans(x, 3, quantize=True)