Me gustaría lograr algo como esto usando tensorflow.

enter image description here

Solo puedo encontrar documentación sobre cómo guardar y restaurar variables (pesos). Sin embargo, como # 2-2, quiero utilizar la salida de una capa oculta (tensor) como entrada de otro modelo. Se puede hacer esto?

0
Jee Seok Yoon 16 ene. 2017 a las 10:46

1 respuesta

La mejor respuesta

Hasta donde yo sé, no es posible encadenar diferentes gráficos de cálculo después de que se hayan creado, sin embargo, tiene algunas opciones.

Opción 2: cree un gráfico grande y use una operación de flujo de control

output_layer, placeholder = build_my_model()
something = tf.where(output_layer < 0, do_something_1(), do_something_2())

Donde todas las llamadas a funciones anteriores deberían devolver operaciones de tensorflow.

Opción 2: crea dos gráficos y realiza la declaración condicional dentro de Python

# Build the first graph
with tf.Graph().as_default() as graph:
    output_layer, placeholder = build_my_model()

# Build the second two graphs
with tf.Graph().as_default() as graph_1:
    something_1 = do_something_1()
with tf.Graph().as_default() as graph_2:
    something_2 = do_something_2()

Como resultado, también terminará con tres sesiones diferentes y deberá alimentar el resultado de la primera sesión a una de las otras dos.

# Get the output
_output_layer = sess.run(output_layer, {placeholder: ...})
if _output_layer < 0:
    something = sess1.run(something_1, {...})
else:
    something = sess2.run(something_2, {...})

Como puede ver, si puede salirse con la suya con la operación de flujo de control, su código será significativamente más simple. Otra ventaja de tener todo en un gráfico es que todo el gráfico es diferenciable y puede entrenar los parámetros de la primera etapa de su modelo condicional a la pérdida en una etapa posterior.

1
Till Hoffmann 16 ene. 2017 a las 11:13
1
Por cierto, graph_editor se puede usar para conectar cosas, es decir, graph_editor.ge.reroute_a2b_ts (new_input, old_input) "conectará" el tensor de new_input donde solía ir old_input
 – 
Yaroslav Bulatov
16 ene. 2017 a las 21:27