我有一个有状态的LSTM模型。我需要对相同的数据多次调用自己的K.function()
,以便测量预测的不确定性。我假设模型的状态实际上不会被更新,因为这通常是由Keras传递给K.function(), updates = parameter
的更新操作完成的。这个假设正确吗?
回答:
是的,将updates=None
或updates=[]
传递给K.function
时,只会评估outputs
。因此,只要你的K.function()
参数本身不进行任何更改,你就是安全的。
这可以在TensorFlow后端源代码中看到:调用将仅评估self.outputs
,因为self.updates_op
将是一个空操作。
我没有使用过其他后端,但我查看了cntk_backend.py
和theano_backend.py
的源代码:它们也是这样做的。