1

在我看到的关于 tfe 的所有教程(包括 tf 官方文档)中,该示例使用渐变磁带,并手动将所有渐变添加到计算渐变列表中,例如

variables = [w1, b1, w2, b2]  <--- manually store all the variables
optimizer = tf.train.AdamOptimizer()
with tf.GradientTape() as tape:
 y_pred = model.predict(x, variables)
 loss = model.compute_loss(y_pred, y)
 grads = tape.gradient(loss, variables) < ---- send them to tape.gradient
 optimizer.apply_gradients(zip(grads, variables))

但这是唯一的方法吗?即使对于大型模型,我们也需要累积所有参数,或者我们可以以某种方式访问​​默认图形变量列表
尝试访问tf.get_default_graph().get_collection(tf.GraphKeys.GLOBAL_VARIABLES)trainable_variables在 tfe 会话中给出空列表。

4

1 回答 1

1

据我所知,TensorFlow 中的 Eager 模式将有关模型的信息存储在对象中,例如在tf.keras.Modeltf.estimator.Estimator. 在没有图表的情况下,您只能在此处获取变量列表,例如使用 tf.keras.Model.trainable_variables。然而,渴望模式可以与显式创建的图形对象一起使用。在这种情况下,我认为它将存储变量列表。没有它,keras 模型对象将是变量的唯一显式存储。

于 2019-03-20T17:24:32.853 回答