TensorFlow Keras多标签分类任务中accuracy指标含义咨询
关于Keras多标签任务中accuracy指标的定义问题
你的模型代码
model_lstm.add(Embedding(256, 250, input_length=640)) model_lstm.add(SpatialDropout1D(0.4)) model_lstm.add(LSTM(50, return_sequences=True)) model_lstm.add(LSTM(50)) model_lstm.add(Dense(12, activation='sigmoid')) model_lstm.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy', 'AUC'])
问题解答
首先明确:你的模型属于多标签分类任务(输出层12个sigmoid神经元搭配binary_crossentropy损失),Keras在这种场景下默认的accuracy实际对应binary_accuracy指标,针对你的疑问解答如下:
此处的accuracy是否表示测试集中平均n%的样本被正确分类?
不是。该指标不会以“样本的所有标签都被正确预测”作为判定样本分类正确的标准,因此不会统计“完全正确的样本占总样本的比例”。此处的accuracy是否表示每个样本中平均n%的标签被正确预测?同时想问,此场景下Keras中的“label”指的是所有标签都被正确分类的样本,还是每个样本的单个标签?
- 是的。计算逻辑为:对每个样本的每一个标签,将预测值(以0.5为阈值判定为0或1)与真实标签对比,统计所有匹配的标签数量占总标签数量的比例,最终取所有样本的平均值。
- 此场景下的“label”指的是每个样本的单个标签,而非“所有标签都正确的样本”。例如一个样本有12个标签,其中9个预测正确,该样本对accuracy的贡献是9/12,而非视为“正确样本”计1分或“错误样本”计0分。
内容的提问来源于stack exchange,提问作者sorda
相关产品推荐
相关产品推荐

