【发布时间】:2020-07-12 11:34:01
【问题描述】:
我正在使用 keras 在 SageMaker 上训练模型,这是我正在使用的代码,但我遇到了错误:
MemoryError: Unable to allocate 381. MiB for an array with shape (25000, 2000)
and data type float64
代码如下:
import pandas as pd
import numpy as np
from keras.datasets import imdb
from keras import models, layers, optimizers, losses, metrics
import matplotlib.pyplot as plt
# load imbd preprocessed dataset
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
num_words=2000)
# one-hot encoding all the integer into a binary matrix
def vectorize_sequences(sequences, dimension=2000):
results = np.zeros((len(sequences), dimension))
for i, sequence in enumerate(sequences):
results[i, sequence] = 1.
return results
x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)
然后我得到错误。
当我第一次运行此代码时它可以工作,但是当我尝试重新运行它时它失败了,我如何通过清理内存来修复它,或者有什么方法可以在 SageMaker 上使用内存?
【问题讨论】:
-
您是否增加了 EC2 sagemaker 实例的大小?这是aws.amazon.com/sagemaker/pricing 的选项列表——默认实例不会有太多内存。
-
@MarcMaxmeister 嘿,我没有增加 EC2 的大小,我还在使用免费层...重新启动内核并重新运行代码似乎可以解决这个问题。
-
好的好的。对于我昨天的问题,我不得不使用 ml.12xlarge 实例(192GB 内存)重新启动,然后它就起作用了。这只花费 4 美元/小时,而且还不到 4 美元。
标签: python amazon-web-services tensorflow keras amazon-sagemaker