Информация о системе
- Написал ли я пользовательский код (в отличие от использования сценария со стандартным примером, предоставленным в 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
- Есть ли способ обойти это? Есть ли другой способ в тензорном потоке для вычисления градиентов?
- или есть ли другой способ ускорить вычисления?