TFRobertaForSequenceClassification二分类报predictions must <=1错误如何解决
错误原因
Hugging Face的TFRobertaForSequenceClassification在num_labels=1的二分类场景下,默认输出的是未经过sigmoid激活的原始logits值,数值范围为(-∞, +∞),并非0-1区间的概率值。你遇到的报错来自两个配置不匹配:
- 损失函数设置
from_logits=False,要求输入的预测值为0-1区间的概率,和模型输出的原始logits不匹配 - Keras自带的
TruePositives、TrueNegatives等分类指标,默认要求输入的预测值在0-1区间,原始logits可能出现大于1或小于0的数值,触发了指标内部的断言校验。你报错日志里只打印了部分样本的预测值,实际该批次中存在超出0-1范围的样本。
解决方法
有两种可直接落地的修改方案:
方案1:适配原始logits输出修改参数
保留模型默认输出原始logits的逻辑,仅修改损失和指标的参数即可:
from transformers import TFRobertaForSequenceClassification import tensorflow as tf model = TFRobertaForSequenceClassification.from_pretrained('roberta-base', num_labels=1) optimizer = tf.keras.optimizers.Adam(learning_rate=5e-5) model.compile( optimizer=optimizer, # 开启from_logits,告知损失函数输入为原始logits loss=tf.keras.losses.BinaryCrossentropy(from_logits=True), metrics = [ 'accuracy', # 给所有混淆矩阵指标添加from_logits=True参数,TensorFlow 2.11及以上版本原生支持 tf.keras.metrics.TruePositives(from_logits=True), tf.keras.metrics.TrueNegatives(from_logits=True), tf.keras.metrics.FalseNegatives(from_logits=True), tf.keras.metrics.FalsePositives(from_logits=True) ]) history = model.fit(train_dataset.shuffle(1000).batch(16), epochs=10, batch_size=16, validation_data = test_dataset.batch(1))
方案2:让模型直接输出0-1概率
在初始化模型时指定激活函数,让模型输出层直接经过sigmoid激活得到概率值,无需修改原有损失和指标的基础配置:
from transformers import TFRobertaForSequenceClassification import tensorflow as tf # 新增classifier_activation参数指定分类头用sigmoid激活 model = TFRobertaForSequenceClassification.from_pretrained('roberta-base', num_labels=1, classifier_activation='sigmoid') optimizer = tf.keras.optimizers.Adam(learning_rate=5e-5) model.compile( optimizer=optimizer, loss=tf.keras.losses.BinaryCrossentropy(from_logits=False), metrics = [ 'accuracy', tf.keras.metrics.TruePositives(), tf.keras.metrics.TrueNegatives(), tf.keras.metrics.FalseNegatives(), tf.keras.metrics.FalsePositives() ]) history = model.fit(train_dataset.shuffle(1000).batch(16), epochs=10, batch_size=16, validation_data = test_dataset.batch(1))
内容的提问来源于stack exchange,提问作者Elliott de Launay
相关产品推荐
相关产品推荐

