ValueError:输入 0 与层 bidirectional_1 不兼容:预期 ndim=3,发现 ndim=2

时间:2021-05-13 08:20:04

标签: python lstm bidirectional

这是这段代码的错误,当我尝试在 CNN 之后添加 biLSTM 时发生了这种情况,我在网上搜索了很长时间。但是没有用。请帮助或尝试提供一些想法如何使这些正确 thx~

这似乎是输入错误,lstm 需要 3 个维度,但我只有 2 个,但我尝试通过以下方式提高维度 x = lambda x: K.expand_dims(x,axis=-1)

但它显示了另一个错误,即“层的所有输入都应该是张量” 所以我的想法不多了,请帮忙~~~~~~~~~~~~~~~

inputs1 = Input(shape=(200, 1))
x1 = inputs1

x1 = Conv1D(64, kernel_size=3, kernel_initializer="he_normal", kernel_regularizer=l2(l),bias_regularizer=l2(l))(x1) 
x1 = BatchNormalization()(x1) 
x1 = Activation("relu")(x1) 
x1 = MaxPooling1D(3, strides=2)(x1) 

x1 = Flatten()(x1) 
inputs2 = Input(shape=(9,)) 
x2 = inputs2 

x = Concatenate()([x1, x2]) 

x = BatchNormalization()(x) 
x = ReLU()(x) 
x = lambda x :K.expand_dims(x , axis=-1) 
x = Bidirectional(CuDNNLSTM(64, return_sequences=True, input_shape=(None, 1)))(x)
x = GlobalMaxPooling1D()(x)

错误如下:

回溯(最近一次调用最后一次): 文件“C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\base_layer.py”,第 310 行,在 assert_input_compatibility K.is_keras_tensor(x) 文件“C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\backend\tensorflow_backend.py”,第 697 行,在 is_keras_tensor str(type(x)) + '. ' ValueError: Unexpectedly found an instance of type `。需要一个符号张量实例。

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用最后一次): 文件“C:/Users/lenovo/Desktop/paper with codes/latest/Deep-Neural-Network-For-Heartbeat-Classification-master/main.py”,第 202 行,在 主要的() 文件“C:/Users/lenovo/Desktop/paper with codes/latest/Deep-Neural-Network-For-Heartbeat-Classification-master/main.py”,第 173 行,在 main 模型 = create_model(l=1e-3) 文件“C:/Users/lenovo/Desktop/paper with codes/latest/Deep-Neural-Network-For-Heartbeat-Classification-master/main.py”,第 105 行,在 create_model 中 x = 双向(CuDNNLSTM(64, return_sequences=True, input_shape=(None, 1)))(x) 文件“C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\layers\wrappers.py”,第 437 行,调用 return super(Bidirectional, self).call(inputs, **kwargs) 文件“C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\base_layer.py”,第 446 行,调用 self.assert_input_compatibility(输入) 文件“C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\site-packages\keras\engine\base_layer.py”,第 316 行,在 assert_input_compatibility str(输入)+ '。层的所有输入' ValueError:使用不是符号张量的输入调用了层 bidirectional_1。接收类型:。完整输入:[]。该层的所有输入都应该是张量。

0 个答案:

没有答案