我是靠谱客的博主 结实短靴,最近开发中收集的这篇文章主要介绍通过数据生成器解决大文件无法一次性载入内存训练的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过数据生成器解决大文件无法一次性载入内存训练的问题

from keras.models import Model

def process_line(line):
    tmp = [float(val) for val in line.strip().split(',')]
    x = np.array(tmp[:-1])
    y = np.array(tmp[-1:])
    return x,y

def generate_arrays_from_file(path,batch_size):
    while 1:
        with open(path) as f:
            cnt, X, Y = 0, [], []
            for line in f:
                x, y = process_line(line)
                X.append(x)
                Y.append(y)
                cnt += 1
                if cnt==batch_size:
                    yield (np.array(X), np.array(Y))
                    cnt, X, Y = 0, [], []
model = Model()
model.fit_generator(generate_arrays_from_file('./train.txt',batch_size=32))

说明:

open() 并不会把文件一次性读入内存,他只是返回一个句柄,open()并不知道你要读还是要写。

while 1:是为了能对文件进行多轮读取,如果不加这一句,读完一次文件后就会退出。

keras 中的fit_generator 使用 Python 生成器逐批生成的数据,按批次训练模型。

数据最好先打乱,因为生成器只能顺序读取,或者在生成一批次数据之后也可以进行一次打乱

最后

以上就是结实短靴为你收集整理的通过数据生成器解决大文件无法一次性载入内存训练的问题的全部内容,希望文章能够帮你解决通过数据生成器解决大文件无法一次性载入内存训练的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部