gpt4 book ai didi

python - 有什么方法可以优化 keras 中大输入的内存使用情况?

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:04 25 4
gpt4 key购买 nike

我正在尝试使用 2D CNN 对中文文章进行文本分类,但在 keras Convolution2D 上遇到了一些麻烦。我知道 Convolution2D 处理图像的基本流程,但我的数据集与 keras 一起使用时遇到了困难。这是我的问题之一:

数据集

  1. 9800条中文.

    负面文章和非负面文章[请注意可能是正面的也可能是中性的],只是一个二分类问题。我对 Convolution1D NN 进行了测试,但结果并不好。

  2. 使用分词器和 word2vec 转换为形状 (9800, 6810, 200)

    最长的文章有6810个字,最短的文章不到50个字,需要padding所有文章到6810,200是word2vec大小(好像有人叫它embedding_size?)。格式如:

     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]]

文章是否最大。字长 6810 太大?我必须将 9800 个样本减少到 6500 个以避免 MemoryError,因为 6500 已经吃掉了我所有的 32GB RAM。除了将所有文章修剪为更短的长度之外,还有什么方法可以优化内存使用?

最佳答案

Keras FAQ已经部分回答了这个问题。您可以使用 model.fit_generator() 分块加载数据.生成器在单独的线程中运行并生成您的小批量,可能会从您的存档中逐个加载它们,避免一次将所有内容加载到 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())

关于python - 有什么方法可以优化 keras 中大输入的内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com