如何在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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