【问题标题】:How to push back altered variables into a tensorflow graph?如何将更改的变量推回张量流图中?
【发布时间】:2017-03-28 11:28:23
【问题描述】:

我试图通过首先在会话中提取可训练变量来操纵多层 LSTM RNN 的权重,如下所示:

    variables_names =[v.name for v in tf.trainable_variables()]
    values = session.run(variables_names)

现在变量values 是我的张量流图中所有权重和偏差的列表。在对权重和偏差进行一些算术运算后,我想将它们上传回图中以继续训练 RNN。有谁知道如何做到这一点?我想如果我使用 numpy 列表 values 作为重新初始化图形的源,它会起作用,但我没有成功。到目前为止,我已经尝试了以下方法:

init = tf.constant(values)
tf.get_variables(variables_names, initializer = init).run()

init = tf.constant(values)
session.run(tf.variables_initializer(values))

在这两种情况下,代码都会通过将我想要初始化的值打印回图表来突然完成执行。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    变量有一个 .load() 方法。您可以通过这种方式将更新后的值传递回图表。

    【讨论】:

    • 加载方法的问题是我从variables_names =[v.name for v in tf.trainable_variables()] 检索到的变量的名称是rnn/multi_rnn_cell/cell_0/lstm_cell/weights:0 类型,因此我无法使用此名称访问变量。您能否举例说明一下,因为 tensorflow 文档中给出的示例对我的问题没有帮助。
    • 创建第二个列表:variables = [v for v in tf.trainable_variables()] 然后您可以在该列表中的任何元素上使用 .load() 方法。它将与您创建的列表(即字符串列表)的顺序相同。
    猜你喜欢
    • 2016-11-17
    • 2021-10-22
    • 2016-09-12
    • 2019-07-11
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多