Python VLFeat:vl_kmeans中特定数量集群的ValueError
我有一个大小为301 x 4096的数组,我想计算它的VLAD向量 我试着用Python VLFeat:vl_kmeans中特定数量集群的ValueError,python,computer-vision,vlfeat,vlad-vector,Python,Computer Vision,Vlfeat,Vlad Vector,我有一个大小为301 x 4096的数组,我想计算它的VLAD向量 我试着用 center, assignments = vlfeat.vl_kmeans(data,8) 但这又回来了 ValueError:要解压缩的值太多 如果我将集群的数量从8更改为2,它就会工作。 我也尝试过其他数字,但它们都返回了相同的ValueError。但是,如果将其设置为1,则返回 ValueError:需要超过1个值才能解包 这可能与我的数据中的样本数量有关吗?VLFeat的这个非官方Python接口的源代码可
center, assignments = vlfeat.vl_kmeans(data,8)
但这又回来了
ValueError:要解压缩的值太多
如果我将集群的数量从8更改为2,它就会工作。
我也尝试过其他数字,但它们都返回了相同的ValueError。但是,如果将其设置为1,则返回
ValueError:需要超过1个值才能解包
这可能与我的数据中的样本数量有关吗?VLFeat的这个非官方Python接口的源代码可以在上找到 默认情况下,
vl_kmeans
函数只返回中心
,因此只有一个值需要解包:
import numpy as np
import vlfeat
x = np.random.rand(10, 8)
centers = vlfeat.vl_kmeans(x, 3)
生成的中心
阵列将具有形状(3,8)
,即3个中心中的每个都有一个8维点
如果要获得每个输入的分配,必须将选项quantize
传递给vl_kmeans
函数。然后,该函数确实返回中心
和赋值
,并按预期工作:
centers, assignments = vlfeat.vl_kmeans(x, 3, quantize=True)
它与函数返回的项目数有关。如果大于2,您将获得要解压缩的
太多值
,当小于2时,您将获得要解压缩的多个值
+。它返回一个命名元组,它是一个包含您的内容的单个对象。@BurhanKhalid意味着它应该总是两个?那么如何指定其他数量的集群?