tf.keras в 4 раза медленнее, чем Keras в моем коде RL - PullRequest
1 голос
/ 03 апреля 2019

Я очень плохо знаком с машинным обучением.Я нашел этот пример на Github: Код

Я реализовал функцию q_learning_keras и перенес модель Keras в модель tf.keras.

С моделью Keras 1000 эпизодовзаймет около 30 минут.
С моделью 1000 tf.keras Эпизоды занимают около 110 минут.
Кроме того, для варианта tf.keras требуется примерно на 5-7% меньше энергии процессора.

Я используюTensorflow версии 1.13.1 и Keras версии 2.2.4.
Я запускаю код на виртуальной машине с 4 ядрами @ 2,6 ГГц.

Модель Keras:

model = Sequential()
model.add(InputLayer(batch_input_shape=(1, 5)))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(2, activation='linear'))
model.compile(loss='mse', optimizer='adam', metrics=['mae'])

Модель tf.keras:

model = tf.keras.models.Sequential([
        tf.keras.layers.InputLayer(batch_input_shape=(1, 5)),
        tf.keras.layers.Dense(10, activation='sigmoid'),
        tf.keras.layers.Dense(2, activation='linear')
        ])

Остальная часть кода в обоих случаях одинакова, как в примере Github, связанном выше.

В наиболее посте я нашел именноПротивоположная проблема, что Keras был медленнее, чем tf.kerasПоэтому я также надеялся получить увеличение скорости или, по крайней мере, остаться прежним.
Так что я думаю, что, возможно, я совершил ошибку, но я ее не нахожу.

Редактировать:
Сделано еще несколько исследований с Tensorboard, чтобы посмотреть, как выглядит модель.Модели выглядят очень похоже на большинство вещей.Но у модели tf.keras есть некоторые накладные расходы.Я не знаю, нормально ли это для модели tf.keras или, если исходить из моего способа, я строю модель.

модель tf.keras модель keras

...