我想将Hierarchical Multiscale LSTM实现为Keras层 它已发布here并在张量流here中实施 我的理解是,有一种方法可以将Keras中的这种张量流对象包装为一个层。我不确定它有多复杂,但我认为这是可行的。你能帮我怎么做吗?
答案 0 :(得分:2)
这通常由implementing a custom Layer完成。更具体地说,您应该继承keras.engine.topology.layer并为以下方法提供自定义实现(并将TensorFlow代码放在其中):
build(input_shape)
:您可以在此处定义权重。此方法必须设置self.built = True
,这可以通过调用来完成super([Layer], self).build()
call(x)
:这是图层逻辑的存在。除非您希望您的图层支持屏蔽,否则您只需要关心第一个图层 传递给调用的参数:输入张量。compute_output_shape(input_shape)
:如果您的图层修改了输入的形状,则应在此处指定形状 转型逻辑。这使Keras能够自动成型 推断。
由于您正在尝试实现循环图层,因此直接从keras.legacy.layers.recurrent继承也很方便。在这种情况下,您可能不需要重新定义compute_output_shape(input_shape)
。如果您的图层需要其他参数,则可以将它们传递给自定义图层的__init__
方法。