Skip to main content
 首页 » 编程设计

python之如何从 tensorflow 高级 API 恢复训练好的 LinearClassifier 并进行预测

2025年02月15日29qq78292959

我已经使用tensorflow的LinearClassifier()类训练了一个逻辑回归模型模型,并设置了model_dir参数,它指定了在模型训练过程中保存检查点的metagrahps的位置:

# Create temporary directory where metagraphs will evenually be saved 
model_dir = tempfile.mkdtemp() 
 
logistic_model = tf.contrib.learn.LinearClassifier( 
    feature_columns=feature_columns,  
    n_classes=num_labels, model_dir=model_dir) 

我一直在阅读有关从元图恢复模型的信息,但对于如何为使用高级 API 创建的模型执行此操作一无所获。 LinearClassifier() 有一个 predict() 函数,但我找不到任何关于如何使用已通过检查点元图恢复的模型实例运行预测的文档。我该怎么做呢?恢复模型后,我的理解是我正在使用 tf.Sess 对象,它缺少 LinearClassifier 类的所有内置功能,如下所示:

with tf.Session() as sess: 
  new_saver = tf.train.import_meta_graph('my-save-dir/my-model-10000.meta') 
  new_saver.restore(sess, 'my-save-dir/my-model-10000') 
  # Run prediction algorithm... 

如何运行高级 API 使用的相同预测算法来对恢复的模型进行预测?有没有更好的方法来解决这个问题?

感谢您的输入。

请您参考如下方法:

LinearClassifier() 有 'model_dir' 参数,如果当指向训练模型时将恢复模型。
在训练期间,您可以:

logistic_model = tf.contrib.learn.LinearClassifier(feature_columns=feature_columns, n_classes=num_labels, model_dir=model_dir) 
classifier.fit(X_train, y_train, steps=10) 

在推理过程中,LinearClassifier() 会从给定的路径加载训练好的模型,您不用fit() 方法而是调用预测()方法:

logistic_model = tf.contrib.learn.LinearClassifier(feature_columns=feature_columns, n_classes=num_labels, model_dir=model_dir) 
y_pred = classifier.predict(X_test)