在TensorFlow中修改成本函数

时间:2018-12-19 18:00:39

标签: python tensorflow

我想修改以下成本函数,使其对预测高于真实输出的样本增加额外的权重!

  

cost = tf.reduce_sum(tf.pow(logits-Y,2))/(2 * batch_size)

我发现它在Tensorflow操作中很棘手!我想使用Tensorflow操作执行以下代码(由numpy编写):

batch_szie = 100
label = np.random.normal(size=batch_szie)
cost = (np.sum(np.power((2*label [label >=0]),2)) + np.sum(np.power((2*label [label <0]),2)))/batch_szie 

请注意,前两行仅用于模拟label = logits-Y

有什么帮助/建议吗?谢谢:)

1 个答案:

答案 0 :(得分:1)

在这里,我找到了这个问题的答案。但是,我认为应该有更简单,更简洁的方法。

batch_size = 4
labels = tf.constant ([1,-1,2,1])
pos_index = tf.where(tf.greater_equal(labels, 0))
pos_index = tf.reshape(pos_index, [-1])
pos_label = 5 * tf.gather(labels, pos_index)
neg_index = tf.where(tf.less_equal(labels, 0))
neg_index = tf.reshape(neg_index, [-1])
neg_label = tf.gather(labels, neg_index)
cost = (tf.reduce_sum(tf.pow(pos_label, 2)) + tf.reduce_sum(tf.pow(neg_label, 2)))/(2*batch_size)
with tf.Session() as sess:
     print(sess.run(cost))