内存错误 Numpy/Python 欧几里得距离

2023-12-15

我正在尝试使用 numpy 和 python 运行 K 均值聚类算法,但如果我使用较大的 K 值(任何大于 10 的值似乎都会导致错误),就会不断遇到内存错误。我有两个大小为 [42000,784] (数据集)和 [K,784] (质心)的 numpy 数组。计算每个质心与每个数据点之间的欧氏距离时会出现内存错误。这是我一直在使用的功能:

def dist(a,b):
    a = a[np.newaxis,:,:]
    b = b[:,np.newaxis,:]
    dist = np.linalg.norm((a-b), axis=2) 
    return dist

这是内存泄漏还是我确实没有足够的内存(我有 8GB)?我怎样才能解决这个问题?


scipy具有用于距离计算的内置函数,与自制的实现相比,速度快如闪电。

所以,第一个想法是更换你的整个distance函数由以下表达式表示:

from numpy.random import rand
from scipy.spatial import distance

# sample data
a = randn(42000, 784
b = randn(256, 784)

# distance computation
dist = distance.cdist(a, b, metric='euclidean')    # about 8.02 s on 
                                                   # my 8 GB RAM machine

注意dist在这个例子中是根据你的例子进行转置的。如果你想要你的例子的形状就这样做dist = distance.cdist(a, b).T.

通过省略平方根运算还可以进一步加快计算速度。您可以通过以下方式完成此操作dist = distance.cdist(a, b, metric='sqeuclidean').

整个方法并没有大大减少内存消耗,但只占用内存几秒钟。

第二个想法是根本不使用自制的实现,而是使用一些可靠的第三方软件包,例如众所周知的Scikit Learn:

from sklear.cluster import KMeans
a = randn(4200, 200)

km = KMeans(n_clusters=256)
km.fit(a)                    # about 10 s

此实现的几个优点之一是,它会自动决定如何计算距离,这样就不会破坏您的记忆。

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

内存错误 Numpy/Python 欧几里得距离 的相关文章

随机推荐

  • 如何从圆角矩形的顶部中心开始描边

    我想用 SVG 制作一个按钮并复制 YouTube 的自动播放圈 我一直在尝试让笔划在顶部中心开始和结束 但它会在左上角开始最好 因为当我开始更改笔划 dasharry 和笔划 dashoffset 周围的数字时 它开始在开始或结束 我知道
  • ListFragment OnListItemClick 未被调用

    我有一个扩展 ListFragment 的类 它重写了 OnListItemClick 方法 我也在另一个 ListFragment 中以相同的方式执行此操作 并且该方法被调用 我想知道为什么当我单击列表项时该方法没有被调用 这是代码 pa
  • IE 需要 2 个文本框来提交一个按钮?

    我遇到了这个奇怪的问题 我不确定是 ASP NET 还是 IE 7 造成的 这个想法是这样的 当我的表单上只有一个文本框和一个 提交 按钮时 在文本框中按 ENTER 键将仅发布文本框的值 该按钮不会被提交 即使在服务器端也不会触发单击 当
  • Excel VBA 应用程序.OnTime。我认为使用这个……想法是个坏主意?

    我支持的许多用户要求事情自动发生 当然更自动 但这是另一点 一个希望事件每 120 秒发生一次 请参阅我的其他问题 另一个希望在每个工作日下午 5 点发生一件事 这必须在 Excel 工作表上 因此 VBA 作为插件等将是不行的 因为它需要
  • HTML 画布矩形内的阴影效果

    背景 我正在使用浏览器 HTML5 canvas 元素 我有代码 我在网上找到 允许我在画布上绘制一个矩形 Question 我想在鼠标移动事件触发时应用如图所示的 阴影 效果 如何才能实现这一目标 当前方法 我当前的方法是在触发 mous
  • ASP.NET 会话和删除文件夹

    我有一个网络应用程序 管理员可以在其中创建新闻 pdf 文档和他的 cms 面板中的其他内容 问题是 当管理员删除新文件或其他文件时 应用程序会删除与该新文件相关的所有文件 我指的是图像 pdf 和其他文档 主要问题是这些文件存储在 新闻
  • 如何从 JSF 数据表内的 selectOneMenu 获取值?

    我有一个包含一堆行的 JSF 数据表 每行内部都有一个 selectOneMenu 如下所示
  • 跨 PHP、MySQL 等管理日期的最佳方法是什么?

    我的服务器在达拉斯 我在纽约市 PHP 和 MySQL 都有用于设置时区的配置变量 我如何让他们一起工作 我应该在 MySQL 中存储哪些日期 如何让 PHP 根据用户的偏好来处理日期更改 请记住 我认为我从未让 PHP 显式设置过日期 它
  • 从 ASMX Web 服务返回 JSON,无需 XML 包装器?

    我需要从 C Web 服务获取 Json 数据 我知道有几个基于此的问题 相信我 我已经阅读了很多 但只是让我更加困惑 这就是我所做的 在我的网络服务中 我包括 System Web Script Services ScriptServic
  • 是否可以为内嵌文本创建框阴影效果?

    我想创建这样的效果 有没有办法通过 CSS JS 来做到这一点 非常感谢 我是网页设计的新手 在过去的几个小时里我一直在努力解决这个问题 下面是一种仅使用 CSS 即可实现文本多行 填充 突出显示行为的方法 这是基于其他地方找到的 box
  • python 线程 - 迭代 n 个任务时始终有 x 个活动线程

    我基本上想做的是 import threading import Queue def test thread elem q q put elem 2 a 1 2 3 4 5 6 7 8 q Queue Queue results for x
  • 我可以在 __new__ 或 __init__ 期间创建类属性吗?

    我想做这样的事情 但到目前为止我还没有取得多大成功 我想让每个 attr 成为一个仅在访问时计算 lazy eval 的属性 class Base object def init self for attr in self myattrs
  • 删除Python字典中的重复值

    我在 Stack Overflow 上发现了这个问题从字典中删除重复项另一个问题中的人也有我同样的问题 我尝试了他们给他的解决方案 但没有一个有效 你能帮助我吗 这是我的清单 然后这是我的代码 def printed filename da
  • 获取 WordPress 中激活插件的列表并从管理菜单中删除插件链接

    是否可以在 WordPress 中获取激活插件列表并将其从管理菜单栏中删除 我想从管理栏中删除所有激活插件链接 找出页面并替换your plugin page 这将列出所有激活的插件 apl get option active plugin
  • 更改子图上的刻度数

    如果我有一个子图 如何更改其刻度数 我不知道数据的最大值和最小值 我的代码是 azal rif add subplot 111 azal plot eels 10 9 averspe label data azal plot eels 10
  • C#:创建单个机器人服务以支持多个机器人应用程序

    该代码位于该网站上https www microsoft com reallifecode 2017 01 10 creating a single bot service to support multiple bot applicati
  • 没有为 Rack::Session::Cookie 警告提供秘密选项?

    我在 Fedora 17 下运行 Rails 3 2 3 Ruby 1 9 当我运行时 我收到此警告rails s 我该如何解决 安全警告 没有向 Rack Session Cookie 提供秘密选项 这构成了安全威胁 强烈建议您 提供一个
  • C++ 类中的成员是否保证是连续的?

    C 中的类成员是否保证是连续的 我尝试使用几乎所有流行的 C 编译器运行以下代码 并且all其中的结果是 4 它是变量 y 的相对地址 这是巧合 还是语言规范保证如此 难道编译器不会让成员 x 和 y 与类基本地址连续 彼此连续吗 请注意t
  • HTML5 - 拖放 div 和内部图像

    我有这种类型的元素 div style margin 20px background red height 400px width 400px a href target blank img style margin 40px src ht
  • 内存错误 Numpy/Python 欧几里得距离

    我正在尝试使用 numpy 和 python 运行 K 均值聚类算法 但如果我使用较大的 K 值 任何大于 10 的值似乎都会导致错误 就会不断遇到内存错误 我有两个大小为 42000 784 数据集 和 K 784 质心 的 numpy