Переменные надстройки вверх по течению для вычисления гессенской матрицы - PullRequest
1 голос
/ 15 марта 2019

начиная со следующего «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?Идея состоит в том, чтобы все обучаемые переменные в графе стали зависимыми от новой, единственной, большей, исходной.Для меня было бы важно, чтобы и градиент, и гессиан работали правильно.

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...