如何在Tensorflow中针对单个课程进行高特异性培训?

时间:2018-08-08 15:22:20

标签: tensorflow machine-learning neural-network time-series recurrent-neural-network

我有一个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)

#Set up the optimizer with gradient clipping to minimize the chance of exploding values
optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate, momentum=0.9, use_nesterov=True)

1 个答案:

答案 0 :(得分:0)

我回答了我自己的问题。

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

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