微信扫一扫打赏支持

TensorFlow2_200729系列---15、交叉熵求梯度实例

TensorFlow2_200729系列---15、交叉熵求梯度实例

一、总结

一句话总结:

loss = tf.reduce_mean(tf.losses.categorical_crossentropy(tf.one_hot(y,depth=2), logits, from_logits=True))

 

1、测试例子中输入x=tf.random.normal([1,3]),x是[1,3]和[2,3]分别表示什么意思?

x是[1,3]:前面的1表示是一个输入(对应的y就是一个),后面的3表示下一层三个节点
x是[2,3]:前面的2表示是2个输入(对应的y就是两个),后面的3表示下一层三个节点

 

 

 

二、交叉熵求梯度实例

博客对应课程的视频位置:

 

import tensorflow as tf 


tf.random.set_seed(4323)
# 这里的[1,3]表示只有一个输入
# 如果这里是2,3,表示的就是两个输入
# 如果这里是两个输入,那么y的真实值(label)也要是两个
x=tf.random.normal([1,3])

w=tf.random.normal([3,2])

b=tf.random.normal([2])

y = tf.constant([0])


with tf.GradientTape() as tape:

    tape.watch([w, b])
    logits = (x@w+b)
    print(logits)
    loss = tf.reduce_mean(tf.losses.categorical_crossentropy(tf.one_hot(y,depth=2), logits, from_logits=True))

grads = tape.gradient(loss, [w, b])
print('w grad:', grads[0])

print('b grad:', grads[1])

 

tf.Tensor([[ 0.09070531 -0.5579208 ]], shape=(1, 2), dtype=float32)
w grad: tf.Tensor(
[[-0.12150346  0.12150346]
 [-0.47514102  0.47514102]
 [-0.30336627  0.30336627]], shape=(3, 2), dtype=float32)
b grad: tf.Tensor([-0.3432992  0.3432992], shape=(2,), dtype=float32)

 

 

 
posted @ 2020-08-04 14:13  范仁义  阅读(242)  评论(0编辑  收藏  举报