gpt4 book ai didi

python - Keras fit_generator 运行很慢

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

我有一个使用以下代码声明的 Keras 模型:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(units=50, activation="tanh", return_sequences=False, input_shape=(settings["past_size"], len(indicators_used))))
model.add(tf.keras.layers.Dense(3, activation="softmax"))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit_generator(
generator=batch_generator(train_x, train_y),
steps_per_epoch=n_batches_per_epoch,
epochs=settings["epochs"],
workers=5,
use_multiprocessing=True,
max_queue_size=10000)

我尝试了 workersuse_multiprocessingmax_queue_size 设置但无济于事。输入形状是 (100000, 500, 27)

批处理生成器函数如下所示:

def batch_generator(x, y):
while True:
for i in range(n_batches_per_epoch):
x_train = []
y_train = []
for j in range(settings["past_size"] + settings["batch_size"] * i, settings["past_size"] + (settings["batch_size"] * (i + 1))):
x_train.append(x.iloc[j - past_size:j].to_numpy())
y_train.append(y.iloc[j].to_numpy())
return_x, return_y = np.array(x_train), np.array(y_train)
yield return_x, return_y

执行时间:

  • 批量大小 256:767 毫秒/步
  • 批量大小 512:1 秒/步
  • 批量大小 1024:2 秒/步

我现在面临的问题是 Keras 训练过程非常慢。一个纪元大约需要 45 分钟。我无法使用 model.fit(),因为数据对于 RAM 来说太大了。

我对 batch_generator 功能的理解是,该函数准备批处理并将它们加载到 GPU/TPU 上,但事实似乎并非如此。此代码使用 TPU 运行时在 Google Colab 中运行。

最佳答案

在 Google colab 环境中,您需要将模型显式转换为 TPU 兼容版本。这是我上次使用 Google Colab 时犯的错误。

TPU_WORKER = 'grpc://' + os.environ['COLAB_TPU_ADDR']
tpu_model = tf.contrib.tpu.keras_to_tpu_model(
model,
strategy=tf.contrib.tpu.TPUDistributionStrategy(
tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)))

tpu_modelmodel 具有相同的接口(interface)。

指南: https://medium.com/tensorflow/tf-keras-on-tpus-on-colab-674367932aa0

不幸的是,这似乎不适用于 Sequential api。

关于python - Keras fit_generator 运行很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58670563/

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