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)
Другие вопросы по тегам