PyTorch implementation of kmeans for utilizing GPU
import torch
import numpy as np
from kmeans_pytorch import kmeans
# data
data_size, dims, num_clusters = 1000, 2, 3
x = np.random.randn(data_size, dims) / 6
x = torch.from_numpy(x)
# kmeans
cluster_ids_x, cluster_centers = kmeans(
X=x, num_clusters=num_clusters, distance='euclidean', device=torch.device('cuda:0')
)
see example.ipynb
for a more elaborate example
install with pip
:
pip install kmeans-pytorch
Installing from source
To install from source and develop locally:
git clone https://github.com/subhadarship/kmeans_pytorch
cd kmeans_pytorch
pip install --editable .
see cpu_vs_gpu.ipynb
for a comparison between CPU and GPU
K-MEANS算法是输入聚类个数k,以及包含 n个数据对象的数据库,输出满足方差最小标准k个聚类的一种算法。k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。 基本步骤 (1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心; (2) 根据每个聚类对象的均值(中心对象),计算每个对象与这
安装pytorch No CUDA版本 # Python 3.5 pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp35-cp35m-linux_x86_64.whl pip3 install torchvision CUDA10版本 # Python 3.5 pip3 install https://do
写这个程序主要是为了熟悉pytorch自定义dataset的方式,所以没有用torchvision自带的cifar10,而是直接将原始图片都下下来了(下载:https://pjreddie.com/media/files/cifar.tgz)。 dataset实现方式也很简单,我个人喜欢将数据集的所有图像地址和所有图像标签分别存在两个npy文件中,然后两个numpy array作为dataset输
目标 sklearn库里面的kmeans算法默认运行在gpu上,运行效率较低。有时候需要在网络内动态的对特征进行分聚类。如果有基于Pytorch Tensor的kmeans实现则可以极大提升效率。 经过检索发现ContrastiveSceneContexts有类似实现,可以参考该实现: 环境 pytorch, pykeops pip install pykeops -i https://pypi
K-Means++是一种用于初始化K-Means聚类的方法,它的目的是通过选择合理的初始点来优化K-Means聚类的性能。 K-Means算法的基本流程是: 随机选择K个初始聚类中心 对于每个数据点,计算它到每个聚类中心的距离,并将其分配到距离最近的聚类中心 对于每个聚类,计算所有数据点的平均值,并将其作为新的聚类中心 重复步骤2和3直到聚类中心不再改变或达到最大迭代次数 K-Means++算法的
一、 简介: 本节主要介绍NMS、k-means anchors 二、 非极大值抑制 (Non-Maximum Suppression, NMS): NMS: 对目标检测任务的输出结果(候选框)进行筛选。 NMS一般流程: (1)根据最小、最大的宽高阈值,滤除超小和超大的anchor; (2)根据置信度(是否是一个目标的置信度,obj_conf),滤除背景目标和置信度极低的目标; (3)根据类别置
在训练一个非常简单的拟合曲线的模型时,遇到下面的报错: C:/Users/user/Desktop/test/test.py:58: UserWarning: Using a target size (torch.Size([30000])) that is different to the input size (torch.Size([30000, 1])). This will likely
sklearn和scipy里面都提供了kmeans聚类的库,但是它们都是根据向量直接进行计算欧氏距离、闵氏距离或余弦相似度,如果使用其他的度量函数或者向量维度非常高需要先计算好度量距离然后再聚类时,似乎这些库函数都不能直接实现,于是我用numpy自己写了一个,运行也非常快。这里记录下来以后备用: import numpy as np import matplotlib.pyplot as pl
import torch import random import copy class K_means(): def __init__(self, data, k): self.data = data self.k = k def distance(self, p1, p2): return torch.sum((p1-p2)