Влияет ли использование Numpy операций в Tensorflow 2.0 на его производительность? - PullRequest
1 голос
/ 17 февраля 2020

Я изучаю код трансформатора здесь в качестве примера.

Функция позиционного кодирования ниже использует numpy для всех своих операций. Затем он возвращает их обратно в тензор TF при возврате результата. Влияет ли такой шаблон на производительность при запуске кода, особенно когда я запускаю его на GPU? Рекомендуется ли использовать только операции TF при реализации модели?

def get_positional_encoding(self, max_len):
    """PE_(pos, 2i) = sin(pos/10000^(2i/d_model))
    PE_(pos, 2i+1) = cos(pos/10000^(2i/d_model))
    """

    pos = np.expand_dims(np.arange(0, max_len), axis=1)
    div_term = np.array([[1 / np.power(10000, (2 * (i//2) / self.d_model)) for i in range(self.d_model)]])       

    pos = pos * div_term

    pe = np.zeros((max_len, self.d_model))
    pe[:, 0:self.d_model//2] = np.sin(pos[:, 0::2])
    pe[:, self.d_model//2:] = np.cos(pos[:, 0::2])

    pe = np.expand_dims(pe, 0)

    print(pe.shape)

    return tf.cast(pe, dtype=tf.float32) 

1 Ответ

0 голосов
/ 31 марта 2020

Да , это влияет на производительность в целом, это предполагает, что вы можете правильно выполнить код без каких-либо ошибок.

Одним из факторов является время, необходимое для передачи / копирования значения от CPU до GPU , который добавляет накладных расходов , чем больше матрицы.

Tensorflow создан для работы в GPU , поэтому, когда вы используете все операции Tensorflow в каждой части кода, вы увидите drasti c улучшение производительности только из-за времени, необходимого для передачи значений из CPU в GPU , это не учитывает оптимизации, применяемые при использовании Tensors для вычислений.

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