начиная со следующего «graph_first»
graph_first = tf.Graph()
with graph_first.as_default():
v = tf.get_variable(name='v', shape=[2], dtype=tf.float64)
x = v[:1]
y = v[1:]
легко получить следующее «graph_unique»:
graph_unique = tf.Graph()
with graph_unique.as_default():
v = tf.get_variable(name='v', shape=[2], dtype=tf.float64)
x = v[:1]
y = v[1:]
c = tf.add(x, y, name='c')
gra = tf.gradients([c], [v])
Действительно, достаточно добавить переменные cи gra, чтобы сделать 'graph_first' эквивалентным 'graph_unique'.Предполагая приведенное выше определение,
with graph_first.as_default():
c = tf.add(x,y, name='c')
gra = tf.gradients([c], [v])
Предположим теперь, что вместо этого нам нужно начать со следующей 'graph_second':
graph_second = tf.Graph()
with graph_second.as_default():
x = tf.get_variable(name='x', shape=[1], dtype=tf.float64)
y = tf.get_variable(name='y', shape=[1], dtype=tf.float64)
c = tf.add(x, y, name='c')
gra = tf.gradients([c], [x,y])
Как мы можем восстановить граф, эквивалентный 'graph_unique«?Другими словами: tf позволяет очень легко добавлять переменные DOWNSTREAM в граф.Можно ли каким-то образом добавить их также в UPSTREAM?Идея состоит в том, чтобы все обучаемые переменные в графе стали зависимыми от новой, единственной, большей, исходной.Для меня было бы важно, чтобы и градиент, и гессиан работали правильно.
Большое спасибо!