Tensorflow2.0 求二阶导数

关键API

tf.GradientTape(persistent: bool = False)

参数persistent指示是否可以二次计算梯度.例:

import tensorflow as tf
w = tf.Variable(tf.constant(5, dtype=tf.float32))
lr = 0.18
epoch = 20

for epoch in range(epoch):  # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环40次迭代。
    with tf.GradientTape(persistent=True) as tape:  # with结构到grads框起了梯度的计算过程。
        loss = tf.square(w + 1)
        grads = tape.gradient(loss, w)  # 为了求二阶导数,必须写在with内
    grads2 = tape.gradient(grads, w) #二次求导(写不写在with内均可)
    print(\'grads 2nd:\', grads2)