数据量大时将数据拟合到机器学习keras模型中
Fit data into machine learning keras model when data is huge
在使用keras的机器学习教程中,训练机器学习模型的代码就是这种典型的一行代码。
model.fit(X_train,
Y_train,
nb_epoch=5,
batch_size = 128,
verbose=1,
validation_split=0.1)
当训练数据 X_train
和 Y_train
较小时,这似乎很容易。 X_train
和 Y_train
是 numpy ndarrays。在实际情况下,训练数据可能达到千兆字节,这可能太大而无法放入计算机的 RAM 中。
当训练数据太大时,如何将数据发送到model.fit()
?
在 Keras 中有一个简单的解决方案。您可以简单地使用 python 生成器,其中您的数据是延迟加载的。如果您有图片,您还可以使用 ImageDataGenerator。
def generate_data(x, y, batch_size):
while True:
batch = []
for b in range(batch_size):
batch.append(myDataSlice)
yield np.array(batch )
model.fit_generator(
generator=generate_data(x, y, batch_size),
steps_per_epoch=num_batches,
validation_data=list_batch_generator(x_val, y_val, batch_size),
validation_steps=num_batches_test)
在使用keras的机器学习教程中,训练机器学习模型的代码就是这种典型的一行代码。
model.fit(X_train,
Y_train,
nb_epoch=5,
batch_size = 128,
verbose=1,
validation_split=0.1)
当训练数据 X_train
和 Y_train
较小时,这似乎很容易。 X_train
和 Y_train
是 numpy ndarrays。在实际情况下,训练数据可能达到千兆字节,这可能太大而无法放入计算机的 RAM 中。
当训练数据太大时,如何将数据发送到model.fit()
?
在 Keras 中有一个简单的解决方案。您可以简单地使用 python 生成器,其中您的数据是延迟加载的。如果您有图片,您还可以使用 ImageDataGenerator。
def generate_data(x, y, batch_size):
while True:
batch = []
for b in range(batch_size):
batch.append(myDataSlice)
yield np.array(batch )
model.fit_generator(
generator=generate_data(x, y, batch_size),
steps_per_epoch=num_batches,
validation_data=list_batch_generator(x_val, y_val, batch_size),
validation_steps=num_batches_test)