Comment prédire les valeurs avec une formation Tensorflow modèle

J'ai formé mon NN en Tensorflow et sauvé le modèle comme ceci:

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)

Maintenant je veux utiliser le modèle appris dans un fichier différent. Bien sûr, il ya de nombreux de nombreux exemples de restaurer et sauver le modèle, je suis passé par beaucoup d'entre eux. Pourtant, je ne pouvais pas le faire tout de leur travail, il y a toujours une erreur. C'est donc mon fichier de restauration, pourriez-vous m'aider à le faire restaurer le modèle enregistré?

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. cette tentative m'a donné le message d'erreur "La session graphique est vide. Les opérations d'ajout du graphique avant d'appeler run()." Alors, quelle opération dois-je ajouter à la graphique, et comment? Je ne sais pas ce que l'opération doit être dans mon modèle... je ne comprends pas ce concept de sauvegarde/restauration dans Tensorflow. Ou dois-je faire de la restauration d'une manière complètement différente? Merci à l'avance!

Avez-vous essayé de mettre saver = tf.train.import_meta_graph('trained_model-1000.meta') dans le with tf.Session() as sess: ? Peut-être avec tf.reset_default_graph() avant que juste pour être sûr...
Salut, oui, c'est résolu cette erreur particulière, merci. Mais le modèle n'est pas encore bien rétabli. J'ai mis à jour le code, donc il n'y a plus de contexte.
Ou peut-être que c'est restaurée, mais je ne sais pas comment l'utiliser pour faire de nouvelles prédictions.
Existe-il des mises à jour sur la façon de gérer cela?
Vous devez définir neural_net(x) de la même façon que dans le dossier de formation, puis restaurer ses données de la manière que dans ma question ou dans le CAta.RAy réponse ci-dessous. Puis vous le prédire, comme dans Alli Abbasi réponse.

OriginalL'auteur T.Poe | 2017-10-12