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)
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2025-04-30:宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672

浙公网安备 33010602011771号