我会尽力理解。
我创建了一个DNNClassifier估算器:
classifier = tf.estimator.DNNClassifier(
feature_columns=feature_column,
hidden_units=[10, 10],
n_classes=3)
我训练了这个模型:
classifier.train(input_fn=lambda:train_input_fn(train_features, train_label, 1), steps=1000)
我在这里遇到了问题。我想改变一下我的评估功能。我解释一下:
我的计划的目标是知道我的模型是否有利可图。 我的功能/标签例如是:
| 2 | 1 | 6 | / | 2 |
如果评估是正确的,我将赢得feature [label]中的值(我们的例子中为6)。如果没有,我输了1。
所以,问题是我不关心准确性,因为它对我没有任何意义。
目前我的评估功能是:
def eval_input_fn(features, labels, batch_size):
"""An input function for evaluation or prediction"""
features=dict(features)
if labels is None:
# No labels, use only features.
inputs = features
else:
inputs = (features, labels)
# Convert the inputs to a Dataset.
dataset = tf.data.Dataset.from_tensor_slices(inputs)
# Batch the examples
assert batch_size is not None, "batch_size must not be None"
dataset = dataset.batch(batch_size)
# Return the dataset.
return dataset
-
eval_result = classifier.evaluate(
input_fn=lambda:eval_input_fn(test_features, test_label,
1), steps=1000)
并且结果不适合我:
INFO:tensorflow:为全局步骤1000保存dict:准确度= 0.555,average_loss = 0.96378326,global_step = 1000,loss = 0.96378326
如果有可能,我希望在我的数据集的每次迭代中计算得益或损失,如果评估期间的预测是否正常。我搜索钩子但没有结果..或者如果有一种方法可以在evaluate()之后导出所有好的预测?
有你的想法吗?
非常感谢你的帮助!