如何将tensorflow对象包装为Keras层?

时间:2018-01-01 23:08:17

标签: tensorflow keras keras-layer

我想将Hierarchical Multiscale LSTM实现为Keras层 它已发布here并在张量流here中实施 我的理解是,有一种方法可以将Keras中的这种张量流对象包装为一个层。我不确定它有多复杂,但我认为这是可行的。你能帮我怎么做吗?

1 个答案:

答案 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__方法。