Python 任何优化大投入的方法';keras中的内存使用情况?
我试图使用2D CNN对中文文章进行文本分类,但在kerasPython 任何优化大投入的方法';keras中的内存使用情况?,python,memory,neural-network,out-of-memory,keras,Python,Memory,Neural Network,Out Of Memory,Keras,我试图使用2D CNN对中文文章进行文本分类,但在kerasConvolution2D方面遇到了一些问题。我知道处理图像的基本流程卷积2D,但仍然坚持使用keras的数据集。这是我的问题之一: 数据集 9800篇中文文章 否定冠词和非否定冠词[请注意它可能是肯定的或中立的],只是一个二元分类问题。我对卷积1d进行了测试,但结果不太好 使用标记器和word2vec转换为形状(98006810200) 最长的文章有6810个单词,最短的文章少于50个单词,需要将所有文章填充到6810,200是wor
Convolution2D
方面遇到了一些问题。我知道处理图像的基本流程卷积2D
,但仍然坚持使用keras的数据集。这是我的问题之一:
数据集
(98006810200)
最长的文章有6810个单词,最短的文章少于50个单词,需要将所有文章填充到6810,200是word2vec大小(似乎有些人称之为嵌入大小?)。格式如下:
1 [[word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200]]
2 [[word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200]]
....
9999 [[word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200], [word2vec size=200]]
内存错误
,因为6500已经吃掉了我所有的32GB RAM。除了将所有文章的篇幅缩短之外,还有什么办法可以优化内存利用率呢?作者已经部分回答了这个问题。您可以使用将数据分块加载。生成器在一个单独的线程中运行,并生成您的小批量,可能会从您的存档中逐个加载它们,避免将所有内容一次加载到RAM中
使用此选项的代码大致如下所示:
def train_generator():
while True:
chunk = read_next_chunk_of_data()
x,y = extract_training_data_from_chunk(chunk)
yield (x,y)
model.fit_generator(generator=train_generator())
请注意,对于多输入(输出)模型,X(y)是numpy数组的列表。