Python GCP计算引擎虚拟机上的PCA内存错误

Python GCP计算引擎虚拟机上的PCA内存错误,python,google-cloud-platform,google-compute-engine,pca,Python,Google Cloud Platform,Google Compute Engine,Pca,我使用Windows Server 2016在GCP Compute Engine上创建了一个虚拟机,在europe-west2数据中心位置使用n1-highmem-4(4个VCPU、2.2 GHz CPU、26 GB内存)和50 GB磁盘大小 我在其中安装了Pycharm,并在一些分辨率为529x940的图像上使用python和scikit学习运行了一个简单的PCA。 但是,当我在(仅)1000个rgb图像上运行此操作时,会出现以下错误: Traceback (most recent call

我使用Windows Server 2016在GCP Compute Engine上创建了一个虚拟机,在europe-west2数据中心位置使用n1-highmem-4(4个VCPU、2.2 GHz CPU、26 GB内存)和50 GB磁盘大小

我在其中安装了Pycharm,并在一些分辨率为529x940的图像上使用python和scikit学习运行了一个简单的PCA。 但是,当我在(仅)1000个rgb图像上运行此操作时,会出现以下错误:

Traceback (most recent call last):
  File "C:/Users/User/PycharmProjects/Sample/Main.py", line 130, in <module>
    pca.fit(data)
  File "C:\Users\User\PycharmProjects\Sample\venv\lib\site-packages\sklearn\decomposition\pca.py", line 329, in fit
    self._fit(X)
  File "C:\Users\User\PycharmProjects\Sample\venv\lib\site-packages\sklearn\decomposition\pca.py", line 370, in _fit
    copy=self.copy)
  File "C:\Users\User\PycharmProjects\Sample\venv\lib\site-packages\sklearn\utils\validation.py", line 444, in check_array
    array = np.array(array, dtype=dtype, order=order, copy=copy)
MemoryError
回溯(最近一次呼叫最后一次):
文件“C:/Users/User/PycharmProjects/Sample/Main.py”,第130行,在
pca.fit(数据)
文件“C:\Users\User\PycharmProjects\Sample\venv\lib\site packages\sklearn\decomposition\pca.py”,第329行
自适配(X)
文件“C:\Users\User\PycharmProjects\Sample\venv\lib\site packages\sklearn\decomposition\pca.py”,第370行,格式为
复制=自我复制)
文件“C:\Users\User\PycharmProjects\Sample\venv\lib\site packages\sklearn\utils\validation.py”,第444行,在check\u数组中
array=np.array(array,dtype=dtype,order=order,copy=copy)
记忆者
我的源代码如下:

import cv2
import numpy as np
import os
import matplotlib.pyplot as plt
from glob import glob
from sklearn.decomposition import PCA
from sklearn import neighbors
from sklearn import preprocessing
import shutil

data = []
i = 0
# Number of images
number = 800

# Load images from file
for filename in glob('Images/*.jpg'):
    img = cv2.imread(filename)
    height, width = img.shape[:2]
    img = np.array(img)

    if height == 529 and width == 940 and i < number:
        i = i + 1
        # Transpose each individual rgb image to a row
        img = np.concatenate(img, axis=0)
        img = np.concatenate(img, axis=0)
        data.append(img)

# Normalisation
data = np.array(data)
Norm = preprocessing.Normalizer()
Norm.fit(data)
data = Norm.transform(data)

# PCA
pca = PCA(0.95)
pca.fit(data)
data = pca.transform(data)
print('Number of components:', pca.n_components_, '\n')
导入cv2
将numpy作为np导入
导入操作系统
将matplotlib.pyplot作为plt导入
从全局导入全局
从sklearn.decomposition导入PCA
向邻居学习
从sk学习导入预处理
进口舒蒂尔
数据=[]
i=0
#图像数量
数字=800
#从文件中加载图像
对于glob中的文件名('Images/*.jpg'):
img=cv2.imread(文件名)
高度、宽度=img.形状[:2]
img=np.数组(img)
如果高度==529,宽度==940,且i
然而,当我在我的笔记本电脑上运行相同的python脚本时,它只有8GB的RAM和2.7GHz的CPU,那么在处理800个图像时,PCA没有内存错误,但它不能在合理的时间内完成(需要8个多小时)

我怎么可能在GCP虚拟机中获得PCA的800 rgb图像的内存错误?GCP虚拟机内存非常大,而我的笔记本电脑内存非常低