Невозможно эффективно рассчитать градиенты в TF 1.14 - PullRequest
1 голос
/ 25 октября 2019

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

  • Написал ли я пользовательский код (в отличие от использования сценария со стандартным примером, предоставленным в TensorFlow):
  • Платформа и распространение ОС (например, Linux Ubuntu 16.04): Ubuntu 18.04
  • версия TensorFlow (используйте команду ниже): 1.14
  • Версия Python: 3.7.3
  • Модель GPU: Titan X (Pascal)
  • CUDA Версия: 10.1

Постановка задачи

Итак, я пытаюсь найти градиенты выходов относительно входов, но мойМодель декодера является ГРУ. Во-первых, я использовал приведенный ниже код, который работает, но работает довольно медленно, так как мой ввод представляет собой вектор измерения 56, но вывод имеет размерную матрицу (276,77):

        def get_gradients(i):
            return tf.gradients(self.decoder_output[:, i], self.decoder_input)[0]

        output_dim = self.decoder_output.shape[1].value
        J = [get_gradients(i) for i in tqdm_notebook(range(output_dim))] 

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

INFO:tensorflow:Cannot use 'while_1/gradients/f_count' as input to 'while_1/gradients/f_count_1' because they are in different while loops.

while_1/gradients/f_count_1 while context: gru_3/while/while_context
while_1/gradients/f_count while context: while_1/while_context
  • Есть ли способ обойти это? Есть ли другой способ в тензорном потоке для вычисления градиентов?
  • или есть ли другой способ ускорить вычисления?
...