Wie voraussagen, - Werte, die mit einem ausgebildeten Tensorflow Modell
Habe ich trainiert, meine NN in Tensorflow gespeichert und das Modell wie folgt:
def neural_net(x):
layer_1 = tf.layers.dense(inputs=x, units=195, activation=tf.nn.sigmoid)
out_layer = tf.layers.dense(inputs=layer_1, units=6)
return out_layer
train_x = pd.read_csv("data_x.csv", sep=" ")
train_y = pd.read_csv("data_y.csv", sep=" ")
train_x = train_x / 6 - 0.5
train_size = 0.9
train_cnt = int(floor(train_x.shape[0] * train_size))
x_train = train_x.iloc[0:train_cnt].values
y_train = train_y.iloc[0:train_cnt].values
x_test = train_x.iloc[train_cnt:].values
y_test = train_y.iloc[train_cnt:].values
x = tf.placeholder("float", [None, 386])
y = tf.placeholder("float", [None, 6])
nn_output = neural_net(x)
cost = tf.reduce_mean(tf.losses.mean_squared_error(labels=y, predictions=nn_output))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
training_epochs = 5000
display_step = 1000
batch_size = 30
keep_prob = tf.placeholder("float")
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(training_epochs):
total_batch = int(len(x_train) / batch_size)
x_batches = np.array_split(x_train, total_batch)
y_batches = np.array_split(y_train, total_batch)
for i in range(total_batch):
batch_x, batch_y = x_batches[i], y_batches[i]
_, c = sess.run([optimizer, cost],
feed_dict={
x: batch_x,
y: batch_y,
keep_prob: 0.8
})
saver.save(sess, 'trained_model', global_step=1000)
Nun möchte ich mit Hilfe des trainierten Modells in einer anderen Datei. Natürlich gibt es auch viele viele Beispiele für die Wiederherstellung und speichern des Modells, ich ging durch viele von Ihnen. Noch konnte ich nicht alle von Ihnen arbeiten, gibt es immer irgendeine Art von Fehler. Dies ist also meine Datei wiederherstellen, können Sie mir bitte helfen, um es wiederherstellen der gespeicherten Modells?
saver = tf.train.import_meta_graph('trained_model-1000.meta')
y_pred = []
with tf.Session() as sess:
saver.restore(sess, tf.train.latest_checkpoint('./'))
sess.run([y_pred], feed_dict={x: input_values})
E. g. dieser Versuch gab mir die Fehlermeldung "Die Sitzung graph leer ist. Add-Operationen, um das Diagramm vor dem Aufruf von run()." Also welche Funktion sollte ich hinzufügen, um die Grafik und wie? Ich weiß nicht, was, die operation sollte in meinem Modell... ich verstehe nicht, das ganze Konzept des speichern/wiederherstellen in Tensorflow. Oder sollte ich die Wiederherstellung komplett anders??? Vielen Dank im Voraus!
saver = tf.train.import_meta_graph('trained_model-1000.meta')
innerhalb der with tf.Session() as sess:
? Vielleicht mit tf.reset_default_graph()
vor, nur um sicher zu sein...Hi, ja, es ist gelöst, dieses Fehlers, danke. Aber das Modell ist immer noch nicht richtig wiederhergestellt. Ich aktualisierte den code, so gibt es mehr Kontext.
Oder vielleicht ist es wiederhergestellt, aber ich nur don T wissen, wie Sie es verwenden, um neue Vorhersagen.
Gibt es irgendwelche updates auf, wie Sie damit umgehen?
Sie haben zu definieren
neural_net(x)
die gleiche Weise wie in der Trainings-Datei, dann die Wiederherstellung Ihrer Daten die Art und Weise wie in meiner Frage oder in den CAta.RAy ' s Antwort weiter unten. Dann vorherzusagen, wie in Alli Abbasi Antwort.
InformationsquelleAutor T.Poe | 2017-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir verzeihen, wenn ich mich Irre, aber
tf.train.Saver()
speichert nur die Werte der Variablen nicht den Graphen selbst. Dies bedeutet, dass, wenn Sie möchten, laden Sie das Modell in einer anderen Datei, die Sie brauchen, um wieder aufzubauen oder das Diagramm irgendwie laden Sie die Grafik als gut. Tensorflow Dokumentation besagt:Betrachten Sie das folgende Beispiel:
Einer Datei, speichert das Modell:
Anderen Datei, lädt das zuvor gespeicherte Modell:
v1, v2
abgelegt sind, dann Lesen. Verstehe ich das. Was ich nicht verstehe ist was ist das gespeichert 'variable' in meinem code? Ich aktualisierte den code, so gibt es mehr Kontext.Was gespeichert variable? Beim speichern eines Modells, speichert es nur die zugewiesenen Werte jedes tensorflow Wert in der aktuellen Sitzung. Wenn Sie wiederherstellen möchten, das Modell in einer anderen Sitzung, die Sie neu erstellen die Grafik, die Sitzung. Wenn die Antwort hilfreich war, bitte kreuzen Sie eine Antwort viel Zeit geht in der Beantwortung dieser Fragen 😉
Wie gesagt, dein code ist ein Beispiel genau das gleiche wie Dutzende andere (eigentlich copy paste von der original-tensorflow tutorial, das ich natürlich bereits gesehen haben). Aber ich weiß noch nicht, "Wie Sie Vorhersagen-Werte mit einem geschulten Modell", das ist die ursprüngliche Frage, kann ich markieren Sie es als Antwort, trotzdem vielen Dank.
Du meinst, wenn ich das Modell neu aufbauen, in einer anderen Sitzung, die ich neu schreiben müssen alle codes erstellen des Graphen? Wie "x=tf.Platzhalter(etwas)" und "layer = tf.nn.conv2d(Eingabe=x)"? Gibt es irgendeine Möglichkeit, dass ich auch laden Sie die graph-Struktur von Dateien?
InformationsquelleAutor Lasse Jacobs
Wo
nn_output
ist der name der Ausgabe-variable der letzten Schicht des Netzwerk. Sie sparen können Sie Variablen verwenden:sind und daher in Ihrem code:
werden sollte :
Wiederherstellen:
Nun sollten Sie Zugriff auf die Knoten des Graphen. Wenn der name nicht angegeben ist, ist es schwierig, sich zu erholen, insbesondere Schicht.
InformationsquelleAutor CAta.RAy
Können Sie wissen, verwenden
tf.saved_model.builder.SavedModelBuilder
Funktion.Den wichtigsten Linien für die Einsparung:
Einen code, um das Modell speichern :
Einen code zur Wiederherstellung des Modells :
InformationsquelleAutor Ismaïla