探究优化机器学习模型的关键技术

  • 格式:doc
  • 大小:14.00 KB
  • 文档页数:1

探究优化机器学习模型的关键技术
设置
import tensorflow as tftf.enable_eager_execution()
梯度带
TensorFlow 提供用于自动微分的tf.GradientTape API - 计算与其输入变量相关的计算梯度。

TensorFlow 通过 tf.GradientTape “记录”在上下文中执行的所有操作到“磁带”(tape)上。

然后,TensorFlow 使用该磁带和与每个记录操作相关联的梯度来计算使用反向模式微分的“记录”计算的梯度。

例如:
x = tf.ones((2, 2)) with tf.GradientTape() as t: t.watch(x) y = tf.reduce_sum(x) z = tf.multiply(y, y)# Derivative of z with respect to the original input tensor xdz_dx = t.gradient(z, x)for i in [0, 1]: for j in [0, 1]: assert dz_dx[i][j].numpy() == 8.0
您还可以根据在“记录” tf.GradientTape 上下文时计算的中间值请求输出的梯度。

x = tf.ones((2, 2)) with tf.GradientTape() as t: t.watch(x) y = tf.reduce_sum(x) z = tf.multiply(y, y)# Use the tape to compute the derivative of z with respect to the# intermediate value y.dz_dy = t.gradient(z, y)assert dz_dy.numpy() == 8.0
默认情况下,GradientTape 持有的资源会在调用GradientTape.gradient() 方法后立即释放。

要在同一计算中计算多个梯度,创建一个持久的梯度带。

这允许多次调用gradient() 方法。

当磁带对象tape 被垃圾收集时释放资源。

例如:
x = tf.constant(3.0)with tf.GradientTape(persistent=True) as t: t.watch(x) y = x * x z = y * ydz_dx = t.gradient(z, x) # 108.0 (4*x at x = 3)dy_dx = t.gradient(y, x) # 6.0del t # Drop the reference to the tape
记录控制流
因为磁带(tape)在执行时记录操作,所以自然会处理Python 控制流(例如使用ifs 和whiles):
def f(x, y): output = 1.0 for i in range(y): if i > 1 and i 神经网络。