看看yield
在Python和發電機的想法。您不需要在開始時加載所有數據。你應該讓你的batch_size
就足夠小,你不會得到內存錯誤。 你發生器可以是這樣的:
def generator(fileobj, labels, memory_one_pic=1024, batch_size):
start = 0
end = start + batch_size
while True:
X_batch = fileobj.read(memory_one_pic*batch_size)
y_batch = labels[start:end]
start += batch_size
end += batch_size
if not X_batch:
break
if start >= amount_of_datasets:
start = 0
end = batch_size
yield (X_batch, y_batch)
...以後當你已經擁有你的架構準備......
train_generator = generator(open('traindata.csv','rb'), labels, batch_size)
train_steps = amount_of_datasets//batch_size + 1
model.fit_generator(generator=train_generator,
steps_per_epoch=train_steps,
epochs=epochs)
你也應該閱讀有關batch_normalization
,基本上有助於更快了解精度更高。
如果您使用TensorFlow作爲後端,您將能夠在多個GPU上拆分網絡。 – Mathias