首页 > 解决方案 > 我可以使用 Estimator API 在没有训练步骤的情况下生成预测(例如:KNN)吗?

问题描述

我正在尝试通过创建自定义 Estimator 来使用 tf.estimator API 设置 KNN。KNN 没有训练的概念,所以我只想定义一个预测步骤。

我尝试将其设置为:

def input_fn():
    train_data = np.random.sample((100, 2))
    data = tf.data.Dataset.from_tensor_slices(train_data)
    return data

def model_fn(features, labels, mode, params, config):    
    k=10
    distance = tf.reduce_sum(tf.abs(tf.subtract(features, tf.expand_dims(features, 1))), axis=2)
    _, top_k_indices = tf.nn.top_k(tf.negative(distance), k=k)    
    return tf.estimator.EstimatorSpec(mode, predictions=top_k_indices)

run_config = tf.estimator.RunConfig(save_summary_steps=None,
                                    save_checkpoints_secs=None)
estimator = tf.estimator.Estimator(model_fn, config=run_config)

next(estimator.predict(input_fn))

但我得到了错误ValueError: Could not find trained model in model_dir: /tmp/tmpPGjIhN.

我希望模型在没有经过训练的情况下进行预测,只需返回在 model_fn 中定义的 10 个最近邻居。我们不需要训练来初始化权重。

标签: pythontensorflowtensorflow-estimator

解决方案


推荐阅读