У меня есть модель, реализованная в 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
Надеюсь, кто-то может помочь:)