Я портировал старый код Pytorch из репозитория github. Я должен запустить файл kmeans.py для kmeans. Когда я делаю, я получаю
valueerror:too many values to unpack.
Вот код kmeans.
# -*- coding:utf-8 -*-
from sklearn.cluster import KMeans
from retrieval import load_feat_db
from sklearn.externals import joblib
from config import DATASET_BASE, N_CLUSTERS
import os
if __name__ == '__main__':
feats, labels = load_feat_db()
#model = KMeans(n_clusters=N_CLUSTERS, random_state=0, n_jobs=-1).fit(feats)
model = KMeans(n_clusters=N_CLUSTERS, random_state=1, n_jobs=1).fit(feats)
model_path = os.path.join(DATASET_BASE, r'models', r'kmeans.m')
joblib.dump(model, model_path)
и вот load_feat_db (), который, я думаю, выдает ошибку.
@timer_with_task("Loading feature database")
def load_feat_db():
feat_all = os.path.join(DATASET_BASE, 'all_feat.npy')
feat_list = os.path.join(DATASET_BASE, 'all_feat.list')
color_feat = os.path.join(DATASET_BASE, 'all_color_feat.npy')
if not os.path.isfile(feat_list) or not os.path.isfile(feat_all) or not os.path.isfile(color_feat):
print("No feature db file! Please run feature_extractor.py first.")
return
deep_feats = np.load(feat_all)
color_feats = np.load(color_feat)
with open(feat_list) as f:
labels = list(map(lambda x: x.strip(), f.readlines()))
return deep_feats, color_feats, labels
Я прочитал документацию по scikit, синтаксис правильный, я попытался изменить seed_state random и n_jobs = 1 (для пробного запуска с одним ядром), но проблема остается. Лямбда-функция, кажется, в порядке. Это действительно не работает из-за Sci Kit? Сейчас я планирую использовать другие kmeans, такие как в opencv.