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
上一篇: Python向脚本传参