通过数据生成器解决大文件无法一次性载入内存训练的问题
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 生成器逐批生成的数据,按批次训练模型。
数据最好先打乱,因为生成器只能顺序读取,或者在生成一批次数据之后也可以进行一次打乱
最后
以上就是结实短靴最近收集整理的关于通过数据生成器解决大文件无法一次性载入内存训练的问题的全部内容,更多相关通过数据生成器解决大文件无法一次性载入内存训练内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复