输入0与层gru_13不兼容:预期ndim = 3,找到ndim = 2

时间:2018-04-03 16:43:59

标签: keras

我想将3CNN3GRU图层一起使用。这是架构:

layer_a = Input(shape=(120,), dtype='float32',name='main')
layer_b = Input(shape=(9,), dtype='float32', name='site')
layer_c = Input(shape=(4,), dtype='float32', name='access')
model = Model(inputs=[layer_a, layer_b,layer_c], outputs=[layer_f])
model.compile(optimizer='adam',loss=smape_error)

但是当我试图融入我的数据时,会产生错误:

  

输入0与图层gru_14不兼容:预期ndim = 3,发现ndim = 2.

不确定出了什么问题?

1 个答案:

答案 0 :(得分:1)

GRU图层需要以下尺寸(batch_size,seq_len,dim_per_seq) 它也会返回(batch_siz,number_of_neurons),所以为了将2个GRU放在一起,第一个GRU层需要设置参数return_sequences = True。

此外,在构建keras模型时,使用model.summary()(只是在erroe出现之前构建模型的一部分)进行调试总是一个好主意。通常问题在于意想不到的形状。

您的架构根本不适合使用GRU层。首先,你不能展平张量,因为这会破坏你的序列,就像结构一样。这将使层连接变得不可能。您可以将树层layer_t,layer_tt和layer_ttt转换并汇集到相同的第二维(应该大于1)。通过这种方式,您可以连接最后一个维度,并获得一个带有类似形状的序列的张量,以放入gru图层。