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