【发布时间】:2019-07-16 19:56:23
【问题描述】:
我正在使用tf.contrib.data.make_csv_dataset 将我的 CSV 数据转换为数据集,该数据集可以很好地为 CSV 中的指定列提供功能和标签。
如何从 CSV 中指定我可能希望在模型测试期间可用但不用于训练和模型计算的额外列?例如,在评估测试准确性时,我想知道 CSV 数据集中哪些特定行的预测是错误的。有没有办法提供一个额外的参数,我可以利用它来找出模型到底出了什么问题?
现在代码看起来像这样(基于 Tensorflow 示例页面):
test_dataset = tf.contrib.data.make_csv_dataset(
CSV_file,
BATCH_TEST_SIZE,
column_names=column_names,
select_columns=column_select,
label_name=label_name,
num_epochs=1,
shuffle=False)\
.map(pack_features_vector)
然后在测试期间,代码会这样做:
for (x, y) in test_dataset:
logits = model(x)
prediction = tf.argmax(logits, axis=1, output_type=tf.int32)
print('Act\t{}\nPred\t{}\n\n'.format(y, prediction))
由于生成器函数仅提供 x 和 y 值,我怎么能说具体从原始 CSV 文件中的哪一行预测可能是错误的?
我怎么能这样做
for (x, y, z) in test_dataset:
print(z[x])
z 是那个额外的列,然后我可以检查它?
【问题讨论】:
-
我很困惑你想如何存储不正确的预测。您的意思是,如果您说每个数据点有 10 个特征向量,您希望将错误预测的数据点存储在新列中?另外,您使用的是什么类型的 ML 方法?请解释一下。
-
我不想存储它们。我只想在模型测试期间显示它们。我有一个简单的二元分类器。在训练周期之后,测试周期从测试数据集中加载特征和标签,计算预测并显示准确性。我还想显示在该周期中加载的行中预测错误的行。这些特性本身并没有告诉我太多(尽管我想我可以将它们作为一个极端的选择来猜测哪些行有问题)
标签: python-3.x tensorflow