我正在尝试使用TF 1.1.0实现VGGnet,使用提供的here的MNIST CNN教程。我收到的错误信息是:
AttributeError: 'SKCompat' object has no attribute 'evaluate'
我的代码的这部分引发了AttributeError:
#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)
由于弃用警告,我最初在SKCompat()
附近添加了learn.Estimator
包装,但我似乎无法找到有关如何使用包装估算工具来评估模型的任何信息。 / p>
答案 0 :(得分:1)
我想知道现在是否有任何优雅的解决方案。就像OP指出的那样,使用SKCompat()包装器可以避免警告,而且似乎将来要做的事情也是如此;但另一方面,evaluate()函数会破坏这种方式。
答案 1 :(得分:0)
我忘了宣布:
loss = None
train_op = None
在我的vggnet_model函数中,它似乎是错误的来源。删除learn.SKcompat()会抛出警告,但模型训练正常且运行良好。