tf.keras.optimizers.Optimizer
Keras优化器的基类
tf.keras.optimizers.Optimizer(
name, gradient_aggregator=None, gradient_transformers=None, **kwargs
)
不可以直接实例化这个类,而应实例化它的子类
在自定义训练循环中的用法
在Keras模型中,有时会在首次调用模型时创建变量,而不是在构建时创建变量。 示例包括1)没有预先定义输入形状的顺序模型,或2)子类化模型。 在这些情况下,将var_list传递为可调用的。
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(num_hidden, activation='relu'))
model.add(tf.keras.layers.Dense(num_classes, activation='sigmoid'))
loss_fn = lambda: tf.keras.losses.mse(model(input), output)
var_list_fn = lambda: model.trainable_weights
for input, output in data:
opt.minimize(loss_fn, var_list_fn)
在应用gradients之前先对其进行处理
调用minimum()既要计算gradients,又要将其应用于变量。 如果要在应用gradients之前对其进行处理,则可以分三步使用优化器:
1)使用tf.GradientTape计算gradients。
2)根据需要处理gradients
3)使用apply_gradients()应用处理后的gradients。
# 建立优化器
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
# 对一组变量求gradient
with tf.GradientTape() as tape:
loss = <call_loss_function>
vars = <list_of_variables>
grads = tape.gradient(loss, vars)
# Process the gradients, for example cap them, etc.
# capped_grads = [MyCapper(g) for g in grads]
processed_grads = [process_gradient(g) for g in grads]
# Ask the optimizer to apply the processed gradients.
opt.apply_gradients(zip(processed_grads, var_list))
模块: tf.summary
用于编写摘要数据的操作,用于分析和可视化。
该tf.summary模块提供用于编写摘要数据的API。可以在TensorBoard(TensorFlow随附的可视化工具包)中可视化此数据。
tf.summary.create_file_writer
为给定的日志目录创建摘要文件编写器。
tf.summary.create_file_writer(
logdir, max_queue=None, flush_millis=None, filename_suffix=None, name=None
)
logdir 一个字符串,指定要在其中写入事件文件的目录。
返回一个SummaryWriter对象。
tf.summary.scalar
编写标量摘要
tf.summary.scalar(
name, data, step=None, description=None
)
name 此摘要的名称。 用于TensorBoard的summary标记将是此名称的任何活动名称范围的前缀。
data 实数标量值,可以转换为float32张量。
step 该摘要的显式int64可转换单调步进值。如果省略,默认为tf.summary.experimental.get_step(),它不能为None。
tf.summary.flush
强制摘要编写器将所有缓冲的数据发送到存储。
tf.summary.flush(
writer=None, name=None
)
writer 要刷新的tf.summary.SummaryWriter资源。 如果此参数为None,则将使用线程默认值。 否则,返回tf.no_op。
name 操作的名称(可选)。