Tensorflow / Keras conv операция очень медленная - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть модель, реализованная в PyTorch, которую из-за производственных проблем я хочу реализовать в Tensorflow.

Я реализовал модель в Tensorflow 2.0 и теперь я хочу обучить ее.Но при запуске модели я не могу даже сделать один прямой пересылки со всеми данными (у меня есть статический контент, tf.constant, который внедряется, и я могу только перенаправить небольшое подмножество этого).

Как уже упоминалось, я пытался работать с подмножеством статического входа, который проходит через, но очень медленно.Работая со всем вводом, я никогда не получаю прохождение операции conv (ожидание более получаса).

У меня есть этот список слоев conv (текущая настройка - два слоя с [(1, 800), (2, 400)]

self.convs = [tf.keras.layers.Conv2D(filters=num_filters, kernel_size=(f_size, self.embedding_size), padding='SAME') for f_size, num_filters in self.params['filters']]

и выполняемые операции:

tensors = tf.expand_dims(tensors, 1)
conved = [tf.keras.activations.relu(conv(tensors)) for conv in self.convs]
conved = [tf.squeeze(x, axis=1) for x in conved]
conved = [tf.reduce_max(x, axis=1, keepdims=False) for x in conved]
emb = self.dropout(tf.concat(conved, axis=1))

Я выполняю эти операции как на входе модели, так и на постоянном тензоре.

Для входных тензоров модели:

формы ввода: (batch_size, 37, 300)
Время расширенного_дата: 9.0e-05
Время Conv + Relu: 1,82
Время сжатия: 0,00016
Уменьшить максимальное время: 0,00051

Для постоянноготензор:
входные формы: (704, 550, 300)
Expanded_dims: 2.932-05
...

Я хорошо знаю, что это довольно дорогая операция, но этодля сравнения, не должно занимать полчаса, работа в режиме отладки с тем же оборудованием и pytorch занимает примерно 10 секунд.

Если посмотреть на системный монитор, все ядра работают почти на 100%, но памятьтолько на 66% емкости.

Информация о системе

  • Ubuntu 18.10
  • Python 3.6
  • Tensorflow 2.0, установленный с установкой pip tf-nightly-2.0-preview
  • Работает наCPU

Надеюсь, кто-то может помочь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...