【问题标题】:how to make tensorflow ops non trainable如何使张量流操作不可训练
【发布时间】:2019-11-25 19:42:16
【问题描述】:

我正在使用 Tensorflow Core(无 API 纯 Tensorflow)构建一个堆叠卷积自动编码器。我想在编码器和解码器之间添加不可训练的层。有谁知道如何在张量流图中添加不可训练的层。附上张量板图形图片,蓝色标记框中出现的操作是我想要使其不可训练的操作,或者可以说我不想对它们进行梯度计算。 TF 版本:1.15 我已经尝试过 tf.stop_gradient() 方法,但是这种方法阻止了它之前的所有输入的贡献。 Tensorboard Graph

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    你有两个选择:

    • 当您使用tf.Variabletf.get_variable 定义权重变量时,传递trainable=False。这将停止将变量添加到可训练变量集合(可通过 tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES) 访问),默认情况下,该变量将用作优化器训练的变量列表。
    • 当您使用minimizecompute_gradients 定义优化步骤时,传递带有您要训练的变量列表的var_list 参数。然后,优化器将忽略可训练变量集合,只会影响列出的变量。

    【讨论】:

    • 感谢您的回复,但问题是我没有创建变量,我只是对作为最后一个卷积层输出的张量执行一些操作。我在自定义层中添加的操作是可训练的,正如您从 Tensorboard graph 中看到的那样。我想让这些标记为红色并与亚当优化器连接的操作不可训练,我希望它们与亚当断开连接。这是该层的代码! Layer which is shown in the Tensornoard。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2016-05-12
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2018-09-17
    • 2019-09-30
    相关资源
    最近更新 更多