【发布时间】:2016-05-03 17:08:48
【问题描述】:
我形成了一个具有多个隐藏状态的小型 LSTM 单元。从 Tensorflow howtos 中,我能够保存和恢复使用 tf.Variable 声明的变量的状态。但是,当我研究 rnn_cell.py 时,我发现存在一个函数:
def linear(args, output_size, bias, bias_start=0.0, scope=None):
里面有一个共享变量访问
matrix = vs.get_variable("Matrix", [total_arg_size, output_size])
据我了解,这个矩阵存储了权重 W_i、W_o、W_f 和 W_o,因为在线性函数之后:
new_c = c * sigmoid(f + self._forget_bias) + sigmoid(i) * tanh(j)
new_h = tanh(new_c) * sigmoid(o)
所以,我也愿意保存和恢复这个变量。我的问题是这在哪里可能?
【问题讨论】:
-
为什么要这样做?当前的保存/恢复对您不起作用?
-
1 - 我从另一篇文章中读到的是 save 和 restore 不会保存这些变量(只保存您在自己的代码中定义的变量,也许我没有仔细检查是错误的) . 2- 速度:我有数百个训练数据文件,当我对这些文件进行训练时,我会在文件的开头和结尾恢复并保存状态。因此,在批量处理单个文件的过程中,我需要每批(假设每 256 个元素)的 Matrix 值进行一些自定义计算。我认为每 256 个元素保存和恢复可能会很昂贵(读/写 io)。
标签: python tensorflow lstm