如何在Tensorflow中针对单一类别进行高特异性训练?

我有一个GRU网络,它接收一系列数据,并将其标记为类别0或类别1。我希望模型对类别0有很高的特异性(至少≥0.8),同时确保它仍然具有良好的敏感性(希望接近0.5)。

我如何在Tensorflow中实现这一点?是否有办法让损失函数由单一类别的特异性和敏感性的组合来决定?我对类别1的预测准确性并不关心,但在这种情况下,当预测为类别0时,预测的正确性非常重要,同时还需要有相当数量的类别0预测(至少在标签为类别0时有一半的时间预测为类别0)。

任何帮助都将不胜感激。

以下是我目前相关的代码:

states_concat = tf.concat(axis=1, values=states)logits = tf.layers.dense(states_concat, n_outputs)softmax = tf.nn.softmax(logits=logits)xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y, logits=logits)loss = tf.reduce_mean(xentropy)#通过梯度裁剪设置优化器,以减少值爆炸的可能性optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate, momentum=0.9, use_nesterov=True)

回答:

我自己回答了这个问题。

对于遇到此问题的其他人,有用的术语还有精确度和召回率,其中精确度测量的是:真阳性/(真阳性 + 假阳性),而召回率测量的是敏感性。

帮助我的链接如下:https://www.quora.com/How-do-I-penalize-false-positive-in-deep-learning-tensorflowhttps://www.tensorflow.org/api_docs/python/tf/nn/weighted_cross_entropy_with_logits

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注