Выполните одно и то же вычисление дважды для разных входных данных, а затем выполните дальнейшие вычисления для двух результатов.

1

В настоящее время мой подход состоит в том, чтобы иметь один вычислительный граф, определенный для вычисления 1 (который вычисляется дважды для двух разных входов), и второй граф вычислений, определенный для вычисления 2, который запускается только один раз с входами из первого вычисления (в этом Я вычисляю разницу выходов вычисления 1, но я ищу решение для более общей проблемы). Затем я дважды запускаю вычисление 1, получаю результаты в массиве Numpy, а затем передаю их на график 2 для второго вычисления. Однако это имеет тот недостаток, что я должен запускать отдельные сеансы Tensorflow для каждого вычисления и перемещать данные назад и вперед между графическим процессором и ОЗУ.

Выделение двух исходных входов для вычисления 1 также не является вариантом, поскольку их размеры могут быть разными (однако размер вывода всегда один и тот же).

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

Теги:
tensorflow

1 ответ

1
Лучший ответ

Попробуйте использовать нетерпеливое исполнение и tf.contrib.eager.defun для построения ваших графиков (для поиска примеров использования defun в кодовой базе tensorflow, чтобы увидеть примеры этого). Непревзойденное выполнение позволяет вам постоянно создавать тензоры на устройстве без их извлечения и без необходимости беспокоиться о сеансах.

  • 0
    Спасибо, я не уверен, решит ли это проблему или нет, но попробую позже. Я отмечу это как решенное, если я не вижу других предложений в ближайшем будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню