Поскольку вы имеете дело с tf.Variable
, вам не нужно использовать редактор графиков.tf.assign
будет достаточно.
Вы можете использовать его следующим образом:
assign_op = tf.assign(conv_weights_input, weights_new)
with tf.Session() as sess:
sess.run(assign_op)
Если вы ищете операции с подпунктами, а не веса.Рассмотрим следующий пример (измененный из этого примера):
import tensorflow as tf
import tensorflow.contrib.graph_editor as ge
def build():
a_pl = tf.placeholder(dtype=tf.float32, name="a")
b_pl = tf.placeholder(dtype=tf.float32, name="b")
c = tf.add(a_pl, b_pl, name="c")
build() #or load graph from disc
a = tf.constant(1.0, shape=[2, 3], name="a_const")
b = tf.constant(2.0, shape=[2, 3], name="b_const")
a_pl = tf.get_default_graph().get_tensor_by_name("a:0")
b_pl = tf.get_default_graph().get_tensor_by_name("b:0")
c = tf.get_default_graph().get_tensor_by_name("c:0")
c_ = ge.graph_replace(c, {a_pl: a, b_pl: b})
with tf.Session() as sess:
#no need for placeholders
print(sess.run(c_))
#will give error since a_pl and b_pl have no value
print(sess.run(c))
Проблема с вашим кодом заключается в том, что вы имеете дело с умениями, а не с тензорами.Суть вышеприведенного примера заключается в том, что первым аргументом является целевой тензор (выходной тензор), который должен быть заменен тензорами в качестве зависимостей.Второй аргумент - это фактические тензоры, которые вы хотите заменить.
Стоит также отметить, что conv_weights_input
на самом деле тензор, где weights_new
- это tf.Variable
.Я полагаю, что вам нужно заменить weights_new
на новую операцию извлечения со случайной инициализацией веса.