话不多说,我们一起看一个例子
import tensorflow as tf
w = tf.Variable(tf.constant(5, dtype=tf.float32)) # 定义一个可训练的参数,初始值为5
lr = 0.001 # 学习率
epoch = 40 # 循环次数
for epoch in range(epoch): # for epoch 定义顶层循环,表示对数据集循环epoch次
with tf.GradientTape() as tape: # with结构到grads框起了梯度的计算过程
loss = tf.square(w + 1) # 损失函数
grads = tape.gradient(loss, w) # gradient函数告知谁对谁求导
w.assign_sub(lr * grads) # assign_sub 对变量做自减 即:w = w - lr * grads
print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss)) # w.numpy()作用是将tensor格式转换
这是一个自定义训练的例子,可以发现用tensorflow实现真的很简单