【发布时间】: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