You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Faiss Kmeans对ResNet50提取的图像特征聚类出现报错如何解决

Faiss KMeans 两类报错的排查解决方法

报错1:AttributeError: 'Kmeans' object has no attribute 'fit'

  • 根本原因:fit是你自定义封装的FaissKMeans类的方法,原生faiss.Kmeans类本身没有提供fit方法,你直接实例化原生faiss的Kmeans类调用fit自然触发属性不存在报错。

报错2:调用train方法触发AssertionError

  • 根本原因:初始化faiss.Kmeans时的第一个参数d要求传入特征向量的维度,你错误传入了feat.shape[0](即样本总数),ResNet50提取的特征维度为2048,对应feat.shape[1],参数传错导致维度校验不通过,触发断言报错。

修正后的可运行代码

方案1:使用你自定义的FaissKMeans封装类(推荐,和你之前的sklearn风格用法一致)

# 实例化自定义的FaissKMeans类,传入肘方法得到的聚类数
kmeans = FaissKMeans(n_clusters=elbow, n_init=10, max_iter=200)
# fit方法第二个参数y无实际作用,传入None即可
kmeans.fit(feat, None)
# 获得所有样本的聚类标签
cluster_labels = kmeans.predict(feat)

方案2:直接使用原生faiss.Kmeans

# 注意d参数传入特征维度feat.shape[1]
kmeans = faiss.Kmeans(d=feat.shape[1], k=elbow, niter=200, nredo=10)
# 输入特征转float32格式执行训练
kmeans.train(feat.astype(np.float32))
# 获得所有样本的聚类标签
_, cluster_labels = kmeans.index.search(feat.astype(np.float32), 1)

内容的提问来源于stack exchange,提问作者Cressida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:48:02