Ich habe zwei Klassen von Modellen definiert, x
und y
.Wie nehme ich die Ausgabe eines Modells als Eingabe eines anderen mit Tensorflow r-1.0?
class x():
def __init__(self, x_inp1, x_inp2):
# do sth...
def step(self, session, encoder_inputs):
input_feed = {}
for l in range(encoder_size):
input_feed[self.encoder_inputs[l].name] = encoder_inputs[l]
...
output_feed = [x_output]
return session.run(x_output)
class y():
def __init__(self, y_inp1, y_inp2):
# do sth...
def step(self, encoder_inputs):
input_feed = {}
for l in range(encoder_size):
input_feed[self.encoder_inputs[l].name] = encoder_inputs[l]
...
Sie haben ziemlich ähnliche Funktionen. Und dann definiere ich eine andere Klasse, um sie zu gruppieren.
class gp():
def __init__(self, x_inp1, x_inp2, y_inp1, y_inp2):
with tf.variable_scope('x'):
self.x_model = x(x_inp1, x_inp2)
with tf.variable_scope('y'):
self.y_model = y(y_inp1, y_inp2)
def step(self, session, encoder_inputs):
x_output = self.x_model.step(session, encoder_inputs)
y_output = self.y_model.step(session, x_output)
...
Bitte beachten Sie, dass die y_model
die Ausgabe von x_model
als Eingabe verwendet. Und ich die gp()
in der main
Funktion auszuführen:
with tf.Session() as sess:
gp_m = gp(x_inp1, x_inp2, y_inp1, y_inp2)
gp_m.step(sess, x_inp1, x_inp2, y_inp1, y_inp2)
und nach x_output = self.x_model.step(encoder_inputs)
laufen und beginnen y_output = self.y_model.step(x_output)
zu tun, ich habe einen solchen Fehler:
InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'x/encoder0' with dtype int32
[[Node: x/encoder0 = Placeholder[dtype=DT_INT32, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
Bitte beachten Sie Dieser Fehler weist auf die x_model
auch die Schrittfunktion davon wurde beendet. Ich frage mich, wie kann ich den Ausgang x_model
als den Eingang von y_model
ohne Fehler verwenden? Danke im Voraus!
Danke für Ihre Antwort! Aber es tut mir leid, dass ich immer noch ein wenig verwirrt bin. Ich sollte die Aufrufe von 'session.run' verschieben, um außerhalb von' step' Funktionen zu sein? Und könnten Sie mir bitte sagen, wie Sie die Grafik vollständig trennen können? Danke vielmals!!! – user5779223
Erstellen Sie das Diagramm (d. H. Rufen Sie die meisten tf-Funktionen auf), geben Sie die Tensoren zurück, die Sie ausführen möchten, und rufen Sie session.run an einer anderen Stelle auf. Um einen guten Weg zu sehen, um Ihren Code zu strukturieren, versuchen Sie, tf.estimator.Estimator zu betrachten –