如何使用 TensorFlow 实现 k-means?

2023-12-22

介绍教程使用内置的梯度下降优化器,非常有意义。然而,k 均值不仅仅是我可以插入梯度下降中的东西。看起来我必须编写自己的优化器,但考虑到 TensorFlow 原语,我不太确定如何做到这一点。

我应该采取什么方法?


(注:您现在可以获得这段代码的更精致的版本作为 github 上的要点 https://gist.github.com/dave-andersen/265e68a5e879b5540ebc.)

你绝对可以做到,但你需要定义自己的优化标准(对于 k 均值,通常是最大迭代计数以及分配何时稳定)。这是一个如何做到这一点的示例(可能有更优化的方法来实现它,并且肯定有更好的方法来选择初始点)。基本上就像你在 numpy 中做的那样,如果你真的努力避免在 python 中迭代地做事情:

import tensorflow as tf
import numpy as np
import time

N=10000
K=4
MAX_ITERS = 1000

start = time.time()

points = tf.Variable(tf.random_uniform([N,2]))
cluster_assignments = tf.Variable(tf.zeros([N], dtype=tf.int64))

# Silly initialization:  Use the first two points as the starting                
# centroids.  In the real world, do this better.                                 
centroids = tf.Variable(tf.slice(points.initialized_value(), [0,0], [K,2]))

# Replicate to N copies of each centroid and K copies of each                    
# point, then subtract and compute the sum of squared distances.                 
rep_centroids = tf.reshape(tf.tile(centroids, [N, 1]), [N, K, 2])
rep_points = tf.reshape(tf.tile(points, [1, K]), [N, K, 2])
sum_squares = tf.reduce_sum(tf.square(rep_points - rep_centroids),
                            reduction_indices=2)

# Use argmin to select the lowest-distance point                                 
best_centroids = tf.argmin(sum_squares, 1)
did_assignments_change = tf.reduce_any(tf.not_equal(best_centroids,
                                                    cluster_assignments))

def bucket_mean(data, bucket_ids, num_buckets):
    total = tf.unsorted_segment_sum(data, bucket_ids, num_buckets)
    count = tf.unsorted_segment_sum(tf.ones_like(data), bucket_ids, num_buckets)
    return total / count

means = bucket_mean(points, best_centroids, K)

# Do not write to the assigned clusters variable until after                     
# computing whether the assignments have changed - hence with_dependencies
with tf.control_dependencies([did_assignments_change]):
    do_updates = tf.group(
        centroids.assign(means),
        cluster_assignments.assign(best_centroids))

sess = tf.Session()
sess.run(tf.initialize_all_variables())

changed = True
iters = 0

while changed and iters < MAX_ITERS:
    iters += 1
    [changed, _] = sess.run([did_assignments_change, do_updates])

[centers, assignments] = sess.run([centroids, cluster_assignments])
end = time.time()
print ("Found in %.2f seconds" % (end-start)), iters, "iterations"
print "Centroids:"
print centers
print "Cluster assignments:", assignments

(请注意,真正的实现需要更加小心地选择初始集群,避免所有点都进入一个集群的问题情况等。这只是一个快速演示。我已经更新了之前的答案,使其变得有点更清晰且“值得举例”。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 TensorFlow 实现 k-means? 的相关文章

  • 在tensorflow .ckpt文件中使用预训练模型

    我有一个 ckpt 文件 我只想得到 cnn 的权重 我已经从 ckpt 检查点文件中进行了训练 inception resnet v2 2016 08 30 import tensorflow as tf saver tf train S
  • 带有 s3 路径的张量板 logdir

    我看到tensorflow支持AWS s3文件系统 https github com tensorflow tensorflow tree master tensorflow core platform s3 https github co
  • Javascript 中的 k 均值聚类实现? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要 k means 聚类算法的 Javascript 实现 我只有一维数据 很少超过 100 个项目
  • 在 Windows 上将 Word2vec 与 Tensorflow 结合使用

    In 本教程文件 https github com tensorflow models blob master tutorials embedding word2vec py L45通过 Tensorflow 找到以下行 第 45 行 来加
  • OutOfRangeError(请参阅上面的回溯):FIFOQueue '_1_batch/fifo_queue' 已关闭并且元素不足(请求 32,当前大小 0)

    我在使用队列中张量流读取图像时遇到问题 请让我知道我犯了什么错误 下面是代码 import tensorflow as tf slim tf contrib slim from tensorflow python framework imp
  • 如何在Google机器学习中将jpeg图像转换为json文件

    我正在研究 Google Cloud ML 我想对 jpeg 图像进行预测 为此 我想使用 gcloud beta ml 预测 instances INSTANCES model MODEL version VERSION https cl
  • 从tensorflow_cc和tensorflow_framework生成静态库

    据我了解 使用 bazel 我只能生产libtensorflow cc so and libtensorflow framework so 我需要生产静态库与位置无关 fPIC 因为稍后我会将它们链接到我自己的动态库 I found 这个答
  • 在 keras 中集成采样的 softmax 失败

    基于如何在 Keras 模型中使用 TensorFlow 的采样 softmax 损失函数 https stackoverflow com questions 47892380 how can i use tensorflows sampl
  • 安装tensorflow的正确命令

    当尝试在 Anaconda 上安装 Tensorflow 时 我尝试了两种类型的命令 conda install tensorflow gpu工作得很好 然而 当尝试conda install c anaconda tensorflow g
  • KMeans 对不平衡数据进行聚类

    我有一组包含 50 个特征 c1 c2 c3 的数据 行数超过 80k 每行包含标准化数值 范围 0 1 它实际上是一个标准化的虚拟变量 其中一些行只有很少的特征 3 4 即如果没有值则分配 0 大多数行大约有 10 20 个特征 我使用
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • 阻止 TensorFlow 访问 GPU? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以纯粹在CPU上运行TensorFlow 我机器上的所有内存都被运行 TensorFlow 的单独进程占用 我尝试将 per process memory fraction 设置为 0 但未成功
  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • 异常:加载数据时 URL 获取失败

    我正在尝试设置我的机器来运行 Tensorflow 2 我从未使用过 Tensorflow 只是下载了 Python 3 7 我不确定这是否是我的机器的问题 我按照上面列出的安装说明进行操作TensorFlow 的网站 https www
  • Tensorflow 中的图像叠加图像卷积

    假设我有两组图像 A 和 B 每个图像都是 11X5x5x3 其中 11 是示例数量 5x5x3 是图像尺寸 Tensorflow 中是否有一种简单的方法可以对 A i 中的每个图像应用 B i 上的卷积 即 B i 扮演过滤器角色 A i
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • 如何使用 Tensorflow-GPU 和 Keras 修复低易失性 GPU-Util?

    我有一台 4 GPU 机器 在上面运行带有 Keras 的 Tensorflow GPU 我的一些分类问题需要几个小时才能完成 nvidia smi returns Volatile GPU Util which never exceeds
  • TensorFlow 无法编译

    尝试从源代码编译 TensorFlow 时出现以下错误 任何想法都会有帮助 bazel out host bin solib local U S Stensorflow Spython Cgen Unn Uops Upy Uwrappers
  • 合并张量流数据集批次

    请考虑下面的代码 import tensorflow as tf import numpy as np simple features np array 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 simple labels

随机推荐

  • 将一个类的所有对象放入一个列表中

    我有一个 C 类 称为 C 当我执行该程序时 我创建该类的新对象 在某些时候 我需要创建一个列表List
  • 如何将 Ruby 数组从 Heroku 控制台导出为 CSV?

    我希望将数组从 heroku 控制台导出到本地 CSV 文件中 在我目前的情况下 我每天都有一个 rake 任务 它寻找谈论我的应用程序的推文 我想分析这些推文 看看它们是什么时间出现的 等等 heroku run console twee
  • 录制视频时的音频音量

    因此 经过大量搜索后 我找到了允许在录制视频的同时播放背景音频的代码块 我已将所述代码块粘贴在下面 fileprivate func setBackgroundAudioPreference guard allowBackgroundAud
  • 枚举内的枚举

    我想在 java 中的 sql 查询的枚举中创建一个枚举 比如我想说table create它会返回 CREATE TABLE 或database create它会返回创建数据库 我怎样才能做到这一点 enum SQL table ALTE
  • 未找到 Phonegap 3.0 IOS 插件

    我在 XCode 中收到此错误 2013 08 23 14 36 18 284 Tell The DJ 14955 c07 ERROR Plugin Device not found or is not a CDVPlugin Check
  • 我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

    我可以执行以下操作吗 OperationContract WebGet UriTemplate foo id string GetFoo int id 我希望我的服务既可以作为 RESTful 服务 又可以作为 RPC 样式的 SOAP 服
  • 如何在C++中链接头文件

    我是使用头文件进行 C 编程的新手 这是我当前的代码 a h ifndef a H define a H namespace hello class A int a public void setA int x int getA endif
  • 如何在 Swift 中从文件夹中获取 UIImage 数组?

    我有一个像这样的普通 Xcode 项目 请注意 有一个名为 images 的文件夹 它是一个实际的文件夹 而不仅仅是一个组 它包含 25 个 png 图像 我想做的就是做一个array of UIimage与每一个图像 或者甚至是图像名称或
  • 使用 register_shutdown_function() 处理 PHP 中的致命错误

    根据对此答案的评论 https stackoverflow com questions 4409426 can i hook a method to my php file that if any page crashes should e
  • 模糊错误表明我的组件名称以零开头

    我收到一个晦涩的错误 我的组件名称为零 但我的组件中没有一个名称是零 这个错误很难追踪 任何人都知道问题可能是什么 这样我就可以朝着正确的方向前进来解决它 vendor js 66537 Vue warn 无效的组件名称 0 组件名称只能包
  • 无法将 Spring Security BASIC 身份验证集成到 Jersey/JAX-RS 和 Tomcat 中

    我正在尝试将 BASIC 身份验证添加到我使用 Jersey JAX RS 和 Tomcat Apache 7 0 创建的 RESTful Web 服务 将来我想在 WebSphere 上部署此 Web 服务 因此我选择在我的项目中使用 S
  • 优化大向量的操作

    这是我的后续行动上一个问题 https stackoverflow com questions 24278006 need advice on optimising haskell data processing关于处理 5 1m 边有向图
  • 自定义 HTML 插件创建 index.html 不影响

    我已经创建了这样的自定义 xhtml 插件 我的plugin xml代码是
  • 关于布局别名的 Android 文档不正确?

    我想弄清楚如何使用最少的样板代码重用或 别名 布局 看来关于布局别名的 Android 文档 http developer android com training multiscreen screensizes html TaskUseA
  • 带有 React useEffect 钩子的 componentWillUnmount

    怎样才能useEffect钩子 或任何其他与此相关的钩子 用于复制componentWillUnmount 在传统的类组件中我会做这样的事情 class Effect extends React PureComponent componen
  • StartPosition 设置为 CenterPosition 但我的表单未居中

    我正在使用 Visual Studio 2012 我的表单打开时不会以屏幕为中心 我有表格StartPosition set to CenterScreen 但它总是从我的左显示器的左上角开始 我有 2 个显示器 有任何想法吗 谢谢 试试这
  • 删除长度为 1 的 Julia 数组维度

    假设我有一个大小为 1024x1024x1x1x100 的 5D 数组 如何制作一个 1024x1024x100 的新数组 如果您提前知道要保留哪些维度 则以下操作有效 arr arr 1 1 But 我提前不知道哪些尺寸是多少我只想保留给
  • Databricks 笔记本挂着 pytorch

    我们遇到 Databricks 笔记本问题 我们的一个笔记本单元似乎挂起 而驱动程序日志确实显示该笔记本单元已被执行 有谁知道为什么我们的笔记本单元一直挂起并且无法完成 请参阅下面的详细信息 情况 我们正在训练 ML 模型pytorch在
  • 如何使用 Photoshop JavaScript 将文本写入文本文件?

    我看了一下Photoshop CS5 脚本编写指南和 Photoshop CS5 JavaScript 参考 http www adobe com devnet photoshop scripting html 但我找不到将文本写入纯文本文
  • 如何使用 TensorFlow 实现 k-means?

    介绍教程使用内置的梯度下降优化器 非常有意义 然而 k 均值不仅仅是我可以插入梯度下降中的东西 看起来我必须编写自己的优化器 但考虑到 TensorFlow 原语 我不太确定如何做到这一点 我应该采取什么方法 注 您现在可以获得这段代码的更