Ich habe eine andere TensorFlow query:TensorFlow: Nicht alle meine Variablen wiederhergestellt werden - Python
Ich trainiere ein Regressionsmodell, die Gewichte und spannt das Speichern und Wiederherstellen sie dann das Modell auf einem anderen Daten erneut ausführen einstellen. Zumindest versuche ich das. Nicht alle meine Gewichte werden wiederhergestellt. Hier ist der Code verwendet meine Variablen zum Speichern:
# Add ops to save and restore all the variables.
saver = tf.train.Saver({**weights, **biases})
# Save the variables to disk.
save_path = saver.save(sess, "Saved_Vars.ckpt")
Und hier ist meine gesamte Code für die Wiederherstellung und den Fahrbetrieb:
# Network Parameters
n_hidden_1 = 9
n_hidden_2 = 56
n_hidden_3 = 8
n_input = 9
n_classes = 1
# TensorFlow Graph Input
x = tf.placeholder("float", [None, n_input])
# Create Multilayer Model
def multilayer_perceptron(x, weights, biases):
# First hidden layer with RELU activation
layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
layer_1 = tf.nn.relu(layer_1)
# Second hidden layer with RELU activation
layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])
layer_2 = tf.nn.relu(layer_2)
# Second hidden layer with RELU activation
layer_3 = tf.add(tf.matmul(layer_2, weights['h3']), biases['b3'])
layer_3 = tf.nn.relu(layer_3)
# Last output layer with linear activation
out_layer = tf.matmul(layer_3, weights['out']) + biases['out']
return out_layer
# weights and biases
weights = {
'h1': tf.Variable(tf.zeros([n_input, n_hidden_1])),
'h2': tf.Variable(tf.zeros([n_hidden_1, n_hidden_2])),
'h3': tf.Variable(tf.zeros([n_hidden_2, n_hidden_3])),
'out': tf.Variable(tf.zeros([n_hidden_3, n_classes]))
}
biases = {
'b1' : tf.Variable(tf.zeros([n_hidden_1])),
'b2': tf.Variable(tf.zeros([n_hidden_2])),
'b3': tf.Variable(tf.zeros([n_hidden_3])),
'out': tf.Variable(tf.zeros([n_classes]))
}
# Construct Model
pred = multilayer_perceptron(x, weights, biases)
pred = tf.transpose(pred)
# Initialize variables
init = tf.global_variables_initializer()
# RUNNING THE SESSION
# launch the session
sess = tf.InteractiveSession()
# Initialize all the variables
sess.run(init)
# Add ops to save and restore all the variables.
saver = tf.train.Saver({**weights, **biases})
# Restore variables from disk.
saver.restore(sess, "Saved_Vars.ckpt")
# Use the restored model to predict the target values
prediction = sess.run(pred, feed_dict={x:dataVar_scaled}) #pred.eval(feed_dict={x:X})
Nun, hier ist es, was mich hat verwirrt/frustriert/verärgert. Aus den Gewichten kann ich 'h1', 'h2' und 'h3' wiederherstellen, aber nicht 'out'. Warum nicht "raus"? Gibt es irgendetwas, was ich falsch mache? Bitte können Sie ein paar Minuten verbringen, um mir zu helfen?
Vielen Dank
Ich bin mit Python 3.5 und TensorFlow 0,12 direkt auf Windows 10 und ich bin mit Spyder IDE.
Thank you so viel, die Variablennamen zu ändern gearbeitet eine Leckerei! :) Kannst du mir bitte genau erklären was '{** Gewichte, ** Verzerrungen}' tut, da ich eindeutig keinen guten Griff habe? Danke nochmal – jlt199
Das [SO thread] (http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-parameters) ist ziemlich gut. Außerdem möchte Saver wirklich eine Liste, kein Wörterbuch. Normalerweise übergebe ich keine Werte an Saver, dann speichert es standardmäßig alles, was speicherbar ist. –