TensorFlow中,如果要对一个参数进行训练,那么这个参数必须是一个变量类tf.Variable,tf.Variable类会在反向传播的时候进行梯度计算并保存梯度信息.
# coding: utf-8
# @时间 : 2022/3/19 2:56 下午
# @作者 : 那美那美 V: qwentest123
import tensorflow as tf
w = tf.Variable([[1.], [2.]])
x = tf.constant([[3., 4.]])
r1 = tf.matmul(w, x) # 矩阵内积
w = w.assign([[5.], [6.]]) # 重新分配值
r2 = tf.matmul(w, x)
print('参与计算1:', r1,'\n参与计算2:', r2)
# tf.Variable类会在反向传播的时候进行梯度计算并保存梯度信息
with tf.GradientTape(persistent=True) as tape:
trainable = tf.Variable(1.)
non_trainable = tf.Variable(2., trainable=False)
x1 = trainable * 2.
x2 = non_trainable * 3.
print(tape.gradient(x1, trainable))
运行结果:
参与计算1: tf.Tensor(
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



