我正在尝试创建一个Python 3程序,使用Tensorflow对句子进行分类。然而,当我尝试运行我的代码时,会出现一系列很长的错误。以下错误似乎是我问题的根本原因:
InvalidArgumentError: 断言失败:[Label IDs must < n_classes] [Condition x < y did not hold element-wise:x (linear/head/ToFloat:0) = ] [[4][4]1…] [y (linear/head/assert_range/Const:0) = ] 2
我使用Scikit-Learn的LabelEncoder()
方法来创建标签ID,这应该符合这一要求;他们的文档页面上说,“将标签编码为0
到n_classes-1
之间的值。”
我尝试运行的代码是:
我对如何继续感到有些不知所措。我只找到一个帖子提到了类似的问题在这里,但如果我理解正确的话,那个用户的问题似乎与我的问题性质不同。
任何见解都将不胜感激!
回答:
尝试这样做:
# 明确指定类别数量,例如10model = tf.estimator.LinearClassifier(feature_columns=feat_cols, n_classes=10)
默认值n_classes=2
,这在内部意味着tensorflow使用sigmoid交叉熵损失。设置类别数量将使其变为softmax交叉熵。