我在TensorFlow中使用DNNClassifier
和LinearClassifier
(使用两个不同的模型进行比较)对我的数据集进行二元分类。我已经成功地使两种模型都能运作并输出有关准确度的指标。但是,我想要的是能够获得某种类型的数组,其中包含模型在测试中所做的所有预测。理想情况下,这些预测也会有一些与之相关的概率。
在StackOverflow和TensorFlow GitHub页面上搜索引导我使用这些代码行来提取预测:
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run(results, feed_dict={?})
唯一的问题是我不知道在feed_dict
放什么。这个问题的大多数其他人似乎都没有使用预制的估算器,因此我很困惑在哪里找到他们在我自己的代码中放入feed_dict
的内容。我尝试使用我在test_input_fn
方法中添加的内容,但我得到了TypeError
。我的代码的其他一些关键部分如下所示:
def get_features(array):
return {'policy_state': np.array(array[:, 2], dtype=str),
'tiv': np.array(array[:, 4], dtype=int),
'veh_count': np.array(array[:, 5], dtype=int),
'generation': np.array(array[:, 8], dtype=str),
'modern_classic_ind': np.array(array[:, 17], dtype=str),
'h_plus_ind': np.array(array[:, 7], dtype=str)}
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x=get_features(my_data),
y=np.array(np.array(my_data[:, 11], dtype=int)),
num_epochs=None,
shuffle=True)
test_input_fn = tf.estimator.inputs.numpy_input_fn(
x=get_features(test_data),
y=np.array(np.array(test_data[:, 11], dtype=int)),
num_epochs=None,
shuffle=True)
我很乐意在必要时提供额外的代码/信息
答案 0 :(得分:2)
使用tf.estimator.Estimator.predict
方法,该方法返回预测结果的生成器。例如:
predict_input_fn = tf.estimator.inputs.numpy_input_fn({"x": x_test},
batch_size=batch_size,
num_epochs=1,
shuffle=False)
predictions = estimator.predict(input_fn=predict_input_fn)
for prediction in predictions:
print(prediction)
注意num_epochs=1
和shuffle=False
以使结果稳定。
答案 1 :(得分:1)
Estimator API自行管理tf.Graph
和tf.Session
,它使用input_fn
为所有相关操作提供值。无需启动tf.Session
。
训练你的模特:
est = tf.estimator.DNNClassifier(...)
est.train(input_fn=train_input_fn)
预测:
predictions = est.predict(input_fn=test_input_fn)
答案 2 :(得分:0)
您应该为所有tf.placeholders提供numpy数组。
如
inputs = tf.placeholder(tf.float, shape=[None,10])
weights = ... (define some weights)
results = tf.matmul(inputs, weights)
feed_in={inputs: np.zeros((1,10))}