首页 > 解决方案 > 错误的解决方法 while_loop() got an unexpected keyword argument 'maximum_iterations'

问题描述

尝试运行代码时出现以下错误:

model = Sequential()
model.add(LSTM(4, input_shape=(1, look_back)))

TypeError:while_loop() 得到了一个意外的关键字参数“maximum_iterations”

我了解其中一个解决方案是使用另一个版本的 keras,例如这个链接。但是我使用的是我公司的桌面,每次卸载和安装都必须经过我公司的 IT 部门。是否有另一种不涉及更改 keras 版本的解决方法?

我的keras版本是v2.2.4;tensoflow 是 v1.1.0

标签: pythontensorflowkeras

解决方案


有一种方法,但它并不漂亮。你可以进入 TensorFlow 内部和猴子补丁while_loop来忽略maximum_iterations=

from tensorflow.python.ops import control_flow_ops

orig_while_loop = control_flow_ops.while_loop

def patched_while_loop(*args, **kwargs):
    kwargs.pop("maximum_iterations", None)  # Ignore.
    return orig_while_loop(*args, **kwargs)


control_flow_ops.while_loop = patched_while_loop

请注意,这不是防弹的,即如果maximum_iterations作为位置(而不是关键字)参数给出它将失败,但它应该LSTM在您的情况下“修复”。


推荐阅读