tf.nn.softmax_cross_entropy_with_logits()函数的使用方法

import tensorflow as tf

labels = [[0.2,0.3,0.5],
[0.1,0.6,0.3]]
logits = [[2,0.5,1],
[0.1,1,3]]

a=tf.nn.softmax([2,0.5,1]) # 此行代码观看softmax函数如何处理数据,结果表明是按照行进行处理,即ln2/(ln2+ln0.5+ln1)
result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits) # 可以发现此函数只将预测logits进行了softmax,这样就可以不用对logits数据进行softmax了
logits_scaled = tf.nn.softmax(logits) # 对logits数据进行softmax
result2 = -tf.reduce_sum(labels*tf.log(logits_scaled),1)
result3 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits_scaled)

with tf.Session() as sess:
print(sess.run(a))
# print(sess.run(logits_scaled))
print(sess.run(result1))
print(sess.run(result2))
print(sess.run(result3))

 softmax实际就是将输入函数带到一个方程np.power(np.e,xi)/Σnp.power(np.e,xi)中得到,其代码如下:

[2,0.5,1]
a=np.power(np.e,2)+np.power(np.e,0.5)+np.power(np.e,1)
print(np.power(np.e,2)/a)

猜你喜欢

转载自www.cnblogs.com/tangjunjun/p/11506093.html