我对TF变量重用感到非常困惑。对于方法rnn,我能够找到这行代码:
if time > 0: vs.get_variable_scope().reuse_variables()
但是,对于dynamic_rnn
(我需要使用的方法),我找不到任何reuse_variable代码行,或者reuse = True。
rnn_cells
模块中的所有RNN单元都使用_linear
方法进行初始化,该方法不检查是否已创建变量,但在LSTM_cell中,_get_concat_variable
可以很好地检查变量的名称存在于graph_key
中或不存在。
dynamic_rnn
不重用变量吗?我应该编写一个方法来显式检查是否创建了一个变量,如果是,则返回它吗?
答案 0 :(得分:1)
dynamic_rnn函数有一个名为scope的参数。因此,您应该创建自己的范围(使用with tf.variable_scope('scope_name', reuse=True)
)并在调用dynamic_rnn
函数时设置它。
您可以查看model_with_buckets的实现,它会为每个存储桶重复使用相同的模型。