VLFeat: ValueError для определенного количества кластеров в vl_kmeans
У меня есть массив размером 301 x 4096, для которого я хочу вычислить вектор VLAD.
Я пытался сделать квантование с помощью
center, assignments = vlfeat.vl_kmeans(data,8)
но это возвращается
ValueError: слишком много значений для распаковки
Если я изменю количество кластеров с 8 на 2, это работает. Я также пробовал другие числа, но все они возвращали тот же ValueError. За исключением того, что при установке его в 1, он возвращает
ValueError: для распаковки нужно более 1 значения
Может быть, это связано с количеством образцов в моих данных?
1 ответ
Источники этого неофициального интерфейса Python для VLFeat доступны на Github.
vl_kmeans
функция по умолчанию возвращает только centers
, поэтому есть только одно значение для распаковки:
import numpy as np
import vlfeat
x = np.random.rand(10, 8)
centers = vlfeat.vl_kmeans(x, 3)
Результирующий centers
массив будет иметь форму (3, 8)
т. е. 8-мерная точка для каждого из 3 центров.
Если вы хотите получить назначения для каждого из входов, вы должны передать опцию quantize
к vl_kmeans
функция. Затем функция возвращает оба centers
а также assignment
и это работает как ожидалось:
centers, assignments = vlfeat.vl_kmeans(x, 3, quantize=True)