我正在keras中实现一个ConvRNN,并且实现遵循最初在Pytorch中实现的。
当类ConvRNN将要返回一个keras模型(输入,输出)时,就会发生错误:
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'
无论如何,我重新检查了我的代码,最终找到了触发问题的代码。但我不知道如何修改它。它们是:
one = keras.backend.ones_like(z)
h_output = keras.layers.add([keras.layers.multiply([keras.layers.subtract([one, z]), h]), keras.layers.multiply([z, n])]) # h = (1 - z) * h + z * n
# h, z and n are all keras tensors
这里我要实现的是h = (1 - z) * h + z * n.
有谁能给我点建议吗?提前谢谢。顺便说一句,keras版本是2.3.1,tensorflow版本是1.14.0。
喔…我终于想通了。永远记住要确保张量上的每一个操作都应该作为keras.layers来完成!
转换:
one = keras.backend.ones_like(z)
:
one = keras.layers.Lambda(lambda x: keras.backend.ones_like(x))(z)
那么错误就消失了!