2016-07-13 53 views
5

Sono nuovo di TensorFlow, ho appena iniziato a imparare qualche giorno fa. Ho completato questo tutorial (https://www.tensorflow.org/versions/r0.9/tutorials/tflearn/index.html#tf-contrib-learn-quickstart) e applicato la stessa identica idea al mio set di dati. (che è venuto fuori piuttosto bene!)Come salvare e ripristinare DNNClassifier addestrato in TensorFlow python; Esempio di iris

Ora mi piacerebbe salvare & ripristinare il DNNClassifier addestrato per un ulteriore utilizzo. Se qualcuno sa come farlo, per favore fammelo sapere usando il codice di esempio iris nel link qui sopra. Grazie per il vostro aiuto in anticipo!

risposta

8

ha trovato la soluzione a questo? Nel caso in cui non lo si è fatto, è possibile farlo specificando il parametro model_dir sul costruttore quando si crea DNNClassifier, in questo modo verranno creati tutti i checkpoint e i file in questa directory (il passaggio di salvataggio). Quando si desidera eseguire il passaggio di ripristino, è sufficiente creare un altro DNNClassifier che passa lo stesso parametro model_dir (fase di ripristino), ciò ripristinerà il modello dai file creati la prima volta.

Spero che questo ti aiuti.

+0

Mi dispiace di essere in ritardo per rispondere al tuo primo commento ... E grazie mille per l'aiuto !!! Ci proverò oggi! Ho provato a usare solo model_dir nell'inizializzazione, ma ho chiamato la funzione di ripristino per caricare il classificatore addestrato. Si è lamentato della mancanza di model.def, ma il tuo suggerimento non sta chiamando la funzione di ripristino e invece è sufficiente inizializzare DNNClassifier con il suo costruttore impostando il percorso su model_dir corretto? – Kazuki

+0

Sì, esatto, si usa il parametro model_dir sul costruttore di DNNclassifier e questo salva il modello, per ripristinare basta creare un altro DNNClassifier con lo stesso modello_dir e leggerà i file generati –

+0

La soluzione ha funzionato? Sto ottenendo il seguente errore: ValueError: si dovrebbero definire linear_feature_columns o dnn_feature_columns. – Kazuki

0

Sotto è il mio codice ...

import tensorflow as tf 
import numpy as np 

if __name__ == '__main__': 
# Data sets 
IRIS_TRAINING = "iris_training.csv" 
IRIS_TEST = "iris_test.csv" 

# Load datasets. 
training_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TRAINING, target_dtype=np.int) 
test_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TEST, target_dtype=np.int) 

x_train, x_test, y_train, y_test = training_set.data, test_set.data, training_set.target, test_set.target 

# Build 3 layer DNN with 10, 20, 10 units respectively. 
classifier = tf.contrib.learn.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3, model_dir="path_to_my_local_dir") 

# print classifier.model_dir 

# Fit model. 
print "start fitting model..." 
classifier.fit(x=x_train, y=y_train, steps=200) 
print "finished fitting model!!!" 

# Evaluate accuracy. 
accuracy_score = classifier.evaluate(x=x_test, y=y_test)["accuracy"] 
print('Accuracy: {0:f}'.format(accuracy_score)) 

#Classify two new flower samples. 
new_samples = np.array(
    [[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float) 
y = classifier.predict_proba(new_samples) 
print ('Predictions: {}'.format(str(y))) 

#--------------------------------------------------------------------------------- 
#model_dir below has to be the same as the previously specified path! 
new_classifier = tf.contrib.learn.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3, model_dir="path_to_my_local_dir") 
accuracy_score = new_classifier.evaluate(x=x_test, y=y_test)["accuracy"] 
print('Accuracy: {0:f}'.format(accuracy_score)) 
new_samples = np.array(
    [[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float) 
y = classifier.predict_proba(new_samples) 
print ('Predictions: {}'.format(str(y))) 
+1

Questo codice è in realtà una risposta alla tua stessa domanda? Se sta solo mostrando qual è il tuo problema, per favore includilo nella domanda. – logc

Problemi correlati