2017-05-25 3 views
0

Ich versuche, VGGnet mit TF 1.1.0 zu implementieren, mit dem MNIST CNN Tutorial here bereitgestellt. Die Fehlermeldung Ich erhalte ist:Tensorflow-Version '' 1.1.0 'SKCompat AttributeError

AttributeError: 'SKCompat' object has no attribute 'evaluate' 

Dieser Teil meines Codes wirft die Attribute:

#create estimator 
vggnet_classifier = learn.SKCompat(learn.Estimator(model_fn=vggnet_model, model_dir= "/tmp/vgg_net")) 

# Set up logging for predictions 
tensors_to_log = {"probabilities": "softmax_tensor"} 
logging_hook = tf.train.LoggingTensorHook(tensors=tensors_to_log, every_n_iter=100) 

#train model 
vggnet_classifier.fit(
    x=X_train, 
    y=y_train, 
    batch_size=100, 
    steps=2, 
    monitors=[logging_hook]) 

# Configure the accuracy metric for evaluation 
metrics = { 
    "accuracy": 
     learn.MetricSpec(metric_fn=tf.metrics.accuracy, prediction_key="classes"),} 

# Evaluate the model and print results 
eval_results = vggnet_classifier.evaluate(x=X_val, y=y_val, metrics=metrics) 
print(eval_results) 

ich ursprünglich hinzugefügt, um die Wrapper um learn.Estimator aufgrund einer deprecation Warnung, aber ich kann‘ Es scheint keine Informationen darüber zu geben, wie der umhüllte Schätzer zur Bewertung des Modells verwendet werden kann.

Antwort

0

Ich vergaß zu erklären:

loss = None 
train_op = None 

in meiner vggnet_model-Funktion, die die Quelle des Fehlers zu sein scheint. Das Entfernen von learn.SKcompat() löst die Warnung aus, aber das Modell trainiert gut und läuft jetzt gut.

1

Ich frage mich, ob es jetzt eine elegante Lösung gibt. Genau wie das OP darauf hinweist, vermeidet die Verwendung des SKCompat() - Wrappers die Warnungen und es scheint, dass dies in Zukunft die richtige Sache ist; Auf der anderen Seite bricht die Funktion evaluate() auf diese Weise ab.