Keras ---关于Masking Layer,然后是Reshape Layer

时间:2017-03-31 06:58:23

标签: deep-learning keras reshape lstm

我想在LSTM之前使用掩码,但是Lstm的输出必须重塑为4 dim。 所以我的代码:

main_input = Input(shape=(96,1000), name='main_input')

pre_input = BatchNormalization()(main_input)

aaa= Masking(mask_value=0)(pre_input)

recurrent1 = LSTM(256,return_sequences=True)(aaa)

r_out= Reshape((1,96,256))(recurrent1)`

但它运行时出错: [![在此处输入图像说明] [1]] [1]

    ---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-2-d1107015501b> in <module>()
     17 recurrent1 = LSTM(256,return_sequences=True)(aaa)
     18 
---> 19 r_out= Reshape((1,96,256))(recurrent1)

/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in __call__(self, x, mask)
    512         if inbound_layers:
    513             # this will call layer.build() if necessary
--> 514             self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
    515             input_added = True
    516 

/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in add_inbound_node(self, inbound_layers, node_indices, tensor_indices)
    570         # creating the node automatically updates self.inbound_nodes
    571         # as well as outbound_nodes on inbound layers.
--> 572         Node.create_node(self, inbound_layers, node_indices, tensor_indices)
    573 
    574     def get_output_shape_for(self, input_shape):

/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in create_node(cls, outbound_layer, inbound_layers, node_indices, tensor_indices)
    148         if len(input_tensors) == 1:
    149             output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
--> 150             output_masks = to_list(outbound_layer.compute_mask(input_tensors[0], input_masks[0]))
    151             # TODO: try to auto-infer shape if exception is raised by get_output_shape_for
    152             output_shapes = to_list(outbound_layer.get_output_shape_for(input_shapes[0]))

/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc in compute_mask(self, input, input_mask)
    605                 else:
    606                     raise Exception('Layer ' + self.name + ' does not support masking, ' +
--> 607                                     'but was passed an input_mask: ' + str(input_mask))
    608             # masking not explicitly supported: return None as mask
    609             return None

Exception: Layer reshape_1 does not support masking, but was passed an input_mask: Any{2}.0

我打印出来,recurrent1的外形是(96,256)

我怎么能做对吗?

0 个答案:

没有答案