hum*_*_me 5 python deep-learning lstm keras
我目前已经使用Keras创建了一个LSTM网络,并且必须获取网络每个节点的内部忘记门数值。每次调用predict()函数时,我都必须忘记门/值。有可能这样做吗?
如果不是,那么是否还有其他库可以方便地在每个步骤访问这些内部门值?
希望最早对此有所帮助。谢谢。
如果您使用Keras后端Tensorflow(这是推荐的后端),您可以使用 访问内部层值(如权重和偏差)tf.global_variables()。为了方便起见,创建一个字典,将图层名称映射到相应的tf.Variable:
variable_dict = dict([])
for variable in tf.global_variable():
variable_dict[variable.name] = variable
Run Code Online (Sandbox Code Playgroud)
经过这个简单的映射后,您可以直接通过名称引用变量。Keras层LSTM(假设model.summary()LSTM 层命名为'lstm_1')具有以下内部变量:'lstm_1/kernel:0'、'lstm_1/recurrent_kernel:0'和'lstm_1/bias:0'。要获得它们的值,您需要对TensorflowSession和对象有一定的了解。Tensor
现在是棘手的部分:Keras 如何将变量存储在这些张量中?该文档没有指定任何有关它的信息,因此不幸的是您必须参考源代码。查看LSTMCell类,尤其是build(描述定义了哪些变量)和call(描述这些变量在计算中如何使用)方法。看起来内部参数存储在变量中,命名为*_i, *_f, *_c, *_o(例如self.kernel_o)。
不幸的是,您必须直接修改计算图。这比听起来更容易:只需编辑 Tensorflow 的代码并将这些变量存储在全局范围内的命名张量中的某个位置即可。
如果没有,那么是否有其他库可以在每一步以方便的方式访问这些内部门值?
如您所见,Keras使用Tensorflow后端非常方便。我认为没有比这更方便的了。
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |