You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow DNNClassifier代码运行异常,求修复方案

解决你的TensorFlow Estimator训练问题

嗨,看了你的代码和日志,问题很明确——你已经搭好了模型和输入数据集,但没有触发训练操作!那些INFO/WARNING只是TensorFlow初始化模型配置的正常输出,因为你没调用训练方法,程序自然就停在这了,没有后续的训练过程。

下面是具体的修复步骤:

  • 添加训练调用:创建完classifier和输入数据集后,必须调用classifier.train()方法来启动训练,同时通过steps参数指定训练步数(不然模型会无限重复训练)。
  • 可选:指定模型目录:你看到的临时目录警告,是因为没给模型指定保存路径,在创建DNNClassifier时加上model_dir参数就能解决这个问题。

修改后的完整代码如下:

import tensorflow as tf

def train_input_fn(features, labels, batch_size):
    """An input function for training"""
    # Convert the inputs to a Dataset.
    dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))
    # Shuffle, repeat, and batch the examples.
    return dataset.shuffle(1000).repeat().batch(batch_size)

# Feature columns describe how to use the input.
my_feature_columns = []
for key in landmark_features.keys():
    my_feature_columns.append(tf.feature_column.numeric_column(key=key))

# Build a DNN with 2 hidden layers and 10 nodes in each hidden layer.
# 这里添加model_dir参数,自定义模型保存路径,避免临时目录警告
classifier = tf.estimator.DNNClassifier(
    feature_columns=my_feature_columns,
    hidden_units=[10, 10],
    n_classes=10,
    model_dir="./my_emotion_model"  # 指定你自己的模型保存目录
)

# 调用train方法启动训练,这里指定训练1000步,你可以根据需求调整
classifier.train(
    input_fn=lambda: train_input_fn(landmark_features, emotion_labels, batch_size=1375),
    steps=1000
)

几点补充说明:

  • 用lambda包裹输入函数是因为classifier.train()要求input_fn是无参的,这样可以把参数传递进去。
  • 如果想控制训练的轮数,也可以在dataset.repeat()里指定次数(比如repeat(10)表示训练10轮),同时配合steps参数一起使用。
  • 运行修改后的代码后,你就能看到训练过程中的损失、准确率等日志输出了。

内容的提问来源于stack exchange,提问作者Dotun Akinnola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:53:16