Tensorflow: заменить одну операцию другой (может быть, даже 2 операции) - PullRequest
0 голосов
/ 11 октября 2018

Моя цель - создать скрипт для преобразования операции в другую с помощью редактора графиков TF.До сих пор я пытался создать скрипт, который просто изменяет вес входного ядра Conv2D, но безрезультатно, так как интерфейс довольно запутанный.».Может кто-нибудь, пожалуйста, предоставьте некоторые идеи?

1 Ответ

0 голосов
/ 11 октября 2018

Поскольку вы имеете дело с 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 на новую операцию извлечения со случайной инициализацией веса.

...