使用(大)numpy阵列馈电时,列车测试分离碰撞RAM

使用(大)numpy阵列馈电时,列车测试分离碰撞RAM,numpy,scikit-learn,Numpy,Scikit Learn,Scikit学习中的train\u test\u split方法在使用shape(56212242243)的numpy数组和shape(5621,3)的和y馈送X时,会崩溃RAM并终止执行 X包含224x224 RGB数据的5621个图像 y包含3个类的5621个OneHot编码标签 我加载了一些图像作为训练数据,以输入一个卷积神经网络,但当分解为训练和测试数据时,它崩溃了。是否有其他选项可以加载图像以避免内存消耗 复制步骤: import numpy as np from sklearn.

Scikit学习中的
train\u test\u split
方法在使用shape
(56212242243)的numpy数组和shape
(5621,3)的
y
馈送
X
时,会崩溃RAM并终止执行

  • X包含224x224 RGB数据的5621个图像
  • y包含3个类的5621个OneHot编码标签
我加载了一些图像作为训练数据,以输入一个卷积神经网络,但当分解为训练和测试数据时,它崩溃了。是否有其他选项可以加载图像以避免内存消耗

复制步骤:

import numpy as np
from sklearn.model_selection import train_test_split

# Generate dummy data
X = np.random.random((5621, 224, 224, 3))
y = np.random.randint(3, size=(5621, 3))

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, shuffle=True) # Breaks here

我希望3766个列车样本和1855个测试样本作为输出,但它发送SIGKILL(和100%RAM使用率)并退出执行。

您确定它是在Split method中进行chrashing还是之前就已经进行了chrashing

您也可以手动拆分它:

X_train = X[:int(len(X)*.8)]
y_train = y[:int(len(X)*.8)]
X_test = X[int(len(X)*.8):]
y_test y[int(len(X)*.8):]

您的数据已经是随机的,所以不应该是排序问题。

它不是因为拆分方法而崩溃,而是因为numpy数组的大小。我做了一些测试,加载
X
y
阵列需要大约7GB的RAM,因此调用
train\u test\u split
(生成另一个副本)达到15GB的已用RAM,使用Linux
free-h