【问题标题】:np.meshgrid using up too much ram Google Colab [closed]np.meshgrid 使用了太多 ram Google Colab [关闭]
【发布时间】:2021-05-23 00:19:08
【问题描述】:

所以我正在为我的班级做这个作业,我遇到了一个问题,Google Colab 说我在执行 np.meshgrid 行时已经用完了所有 RAM。我知道网格网格正在使用大约 50GB 的空间,但我不知道如何减少它。有人可以帮我理解我做错了什么吗?这是问题:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import lines
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# you need to define the min and max values from the data
step_size = 0.05
data, labels = load_digits(return_X_y=True)
(n_samples, n_features), n_digits = data.shape, np.unique(labels).size
reduced_data = PCA(n_components=3).fit_transform(data)
kmeans = KMeans(init="k-means++", n_clusters=n_digits, n_init=4)
kmeans.fit(reduced_data)

x_min, x_max = reduced_data[:, 0].min() - 1, reduced_data[:, 0].max() + 1
y_min, y_max = reduced_data[:, 1].min() - 1, reduced_data[:, 1].max() + 1
z_min, z_max = reduced_data[:, 2].min() - 1, reduced_data[:, 2].max() + 1

# x_min = -32.16990591295523
# x_max = 32.700123434559885
# y_min = -28.49444674444793
# y_max = 31.092205057161326
# z_min = -30.301750160946828
# z_max = 33.70884919881785

xx, yy, zz = np.meshgrid(np.arange(x_min, x_max, step_size),
                         np.arange(y_min, y_max, step_size),
                         np.arange(z_min, z_max, step_size))

# mesh grid size = 3894

【问题讨论】:

  • 我们不知道这 3 个 np.arange 表达式的参数。假设 3 个结果数组的大小分别为 N, M, L。然后一个xx 将是 (N,M,L) 形状,即。 N*M*L 元素。乘以 3。所以您应该能够估计 meshgrid 的内存使用情况。
  • @hpaulj 感谢您的评论。我在代码中添加了参数值和meshgrid 的大小作为编辑。我仍然不知道如何解决它:(

标签: python numpy machine-learning scikit-learn


【解决方案1】:

所以你的 3 arange 大小差不多

In [38]: np.arange(-32,32,.05).shape
Out[38]: (1280,)

meshgrid 制作 3 个“立方体”,每个维度有 1280 个点

In [42]: (1280**3)/1e9
Out[42]: 2.097152

这是 2G 点,或 16GB 内存;时间 3 是 50 GB 的内存使用量。

难怪它在抱怨!

【讨论】:

  • 非常感谢。我明白它为什么抱怨。有没有办法在将相同的东西传递到meshgrid 时减少内存影响?有没有更好的方法我应该为xxyyzz 赋值?
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 2021-07-17
  • 2020-08-07
  • 2020-03-25
  • 2020-04-14
相关资源
最近更新 更多