Tensotflow1.0入门(九)-tensorflow分类函数

# coding=utf-8
'''
Created on 2019年4月5日

@author: admin
'''

import tensorflow as tf

# tf.nn.sigmoid_cross_entropy_with_logits(_sentinel, labels, logits, name)
# tf.nn.softmax(logits, axis, name, dim)
# tf.nn.log_softmax(logits, axis, name, dim)
# tf.nn.softmax_cross_entropy_with_logits(_sentinel, labels, logits, dim, name)
# tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel, labels, logits, name)
# tf.nn.softmax_cross_entropy_with_logits_v2(_sentinel, labels, logits, dim, name) 

# tf.nn.softmax_cross_entropy_with_logits(v1)和tf.nn.softmax_cross_entropy_with_logits_v2(v2)区别在于前者在进行反向传播的时候,只对logits进行反向传播,labels保持不变。而v2在进行反向传播的时候,同时对logits和labels都进行反向传播,如果将labels传入的tensor设置为stop_gradients,就和v1一样了。 
# 那么问题来了,一般我们在进行监督学习的时候,labels都是标记好的真值,什么时候会需要改变label?v2存在的意义是什么?实际上在应用中labels并不一定都是人工手动标注的,有的时候还可能是神经网络生成的,一个实际的例子就是对抗生成网络(GAN)。
# 参考自https://blog.csdn.net/tsyccnh/article/details/81069308

# # logits是神经网络的最后一层输出
# logits:[batch_size,num_classes] lables:[batch_size,num_classes]或者[batch_size]
# loss:[batch_size]

# # tf.nn.softmax
# a = tf.constant([[50.0,100.0],[0.2,4.0]])
# b = tf.constant([[0.0,1.0],[0.0,1.0]])
# c = tf.nn.softmax(logits=a)
# cost = tf.reduce_mean(-tf.reduce_sum(b * tf.log(c), axis=1))
# sess = tf.Session()
# print(sess.run(cost))
# # 0.011062144

# #tf.nn.softmax_cross_entropy_with_logits(_sentinel, labels, logits, dim, name)
# a = tf.constant([[0.0,99.0],[0.2,4.0]])
# b = tf.constant([[0,1],[0,1]])#需要ONE-HOT形式
# cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=a, labels=b))
# sess = tf.Session()
# print(sess.run(cost))
# 0.011062129
 
# #tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel, labels, logits, name)
# a = tf.constant([[0.0,99.0],[0.2,4.0]])
# b = tf.constant([1,1])#不需要ONE-HOT形式
# cost = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=a, labels=b))
# sess = tf.Session()
# print(sess.run(cost))
# 0.011062129

#tf.nn.sigmoid_cross_entropy_with_logits(_sentinel, labels, logits, name)
a = tf.constant([[9999.9],[-54.0]])
b = tf.constant([[1.0],[1.0]])#2分法
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=a, labels=b))
sess = tf.Session()
print(sess.run(cost))
# 27.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值