【问题标题】:Multiple training variables in GradientTape tensorflowGradientTape 张量流中的多个训练变量
【发布时间】:2020-08-19 16:19:02
【问题描述】:

我在 tensorflow 中有以下 trainable_variables 列表:

l_vars = [l_unary.trainable_variables, l_regularization.trainable_variables]

像这样传递到磁带中:

    grad_l_model = l_tape.gradient(tf.constant(l_loss), l_vars)

但是,这会产生错误:

AttributeError: 'list' object has no attribute '_in_graph_mode'

当用 tf.Variable 包装 l_vars 时,我收到错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Shapes of all inputs must match: values[0].shape = [5,5,3,32] != values[1].shape = [32] [Op:Pack] name: initial_value
tf.keras.layers.concatenate([l_unary.trainable_variables, l_regularization.trainable_variables], 0)

给予:

ValueError:应在至少包含 2 个输入的列表上调用 Concatenate

如何使用 tensorflow 一起训练多个模型变量?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    请注意,您的l_vars 不是一个列表,而是一个列表列表,因为每个trainable_variables 属性本身已经是一个列表。你可以简单地使用

    l_vars = l_unary.trainable_variables + l_regularization.trainable_variables
    

    将两个列表连接成一个大列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2016-10-05
      • 2020-02-29
      • 2021-06-28
      • 2020-02-22
      • 1970-01-01
      相关资源
      最近更新 更多