欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

softmax交叉熵

程序员文章站 2022-05-25 16:09:38
...

softmax应用

实例描述

下面的代码中,假设有一个标签labels和一个网络输出值logits。

这个例子以这两个值来计算一下3次试验。

(1) 两次softmax试验:将输出的logits分别进行1次和2次softmax,观察两次的区别及意义。

(2) 观察交叉熵:将步骤(1)中的两个值分别进行softmax_cross_entropy_with_logits,观察它们的区别。

(3)自建公式试验:将做两次softmax的值放到自建组合公式里得到正确的值。

import tensorflow as tf

labels = [[0,0,1],[0,1,0]]
logits = [[2, 0.4, 6],[0.2, 0, 3]]

logits_scaled = tf.nn.softmax(logits)
logits_scaled2 = tf.nn.softmax(logits_scaled)


result1 = tf.nn.softmax_cross_entropy_with_logits(labels = labels, logits = logits)
result2 = tf.nn.softmax_cross_entropy_with_logits(labels = labels, logits = logits_scaled)
result3 = -tf.reduce_sum(labels*tf.log(logits_scaled),1)

with tf.Session() as sess:
    print("scaled = ", sess.run(logits_scaled))
    print("sacled2 = ", sess.run(logits_scaled2))

    print("rel1 = ",sess.run(result1),"\n")
    print("rel2 = ",sess.run(result2),"\n")
    print("rel3 = ",sess.run(result3))

运行以上代码,得到一下结果:

vscaled =  [[0.01792113 0.00361821 0.9784606 ]
 [0.05475439 0.0448291  0.9004165 ]]
sacled2 =  [[0.21744308 0.21435514 0.5682018 ]
 [0.2315006  0.22921424 0.5392852 ]]
rel1 =  [0.02177474 3.1048977 ] 

rel2 =  [0.5652787 1.4730982] 

rel3 =  [0.02177475 3.104898  ]

Process finished with exit code 0

 

相关标签: TensorFlow