【问题标题】:Input 0 of layer conv1d_2 is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: (None, 128). To develop LSTM-CNN层 conv1d_2 的输入 0 与层不兼容::预期 min_ndim=3,发现 ndim=2。收到的完整形状:(无,128)。开发 LSTM-CNN
【发布时间】:2021-11-04 20:49:45
【问题描述】:

我正在尝试将 CNN 层合并到 LSTM 网络中,如图所示。

model = Sequential()
model.add(LSTM(64, return_sequences = True, input_shape=(X_train.shape[1], X_train.shape[2]),activation='relu'))
model.add(Dropout(0.1)) model.add(LSTM(128, activation= 'relu')) 
model.add(Conv1D(32, kernel_size=3, activation='relu'))
model.add(Flatten()) model.add(Dense(1)) 

model.compile(loss='mean_squared_error', optimizer='adam')

但它给出了关于输入形状的以下错误。请帮助解决问题。

【问题讨论】:

  • 您可以在这里复制并粘贴代码而不是在您的问题中添加链接吗?
  • # 设计网络 # model = Sequential() # model.add(LSTM(64, return_sequences = True, input_shape=(X_train.shape[1], X_train.shape[2]),activation= 'relu')) # model.add(Dropout(0.1)) model.add(LSTM(128, activation='relu')) model.add(Conv1D(32, kernel_size=3, activation='relu')) 模型.add(Flatten()) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam')

标签: machine-learning deep-learning computer-vision conv-neural-network lstm


【解决方案1】:

试试这个:

model = Sequential()
model.add(LSTM(64, return_sequences = True, input_shape = (X_train.shape[1], X_train.shape[2]), activation='relu'))
model.add(Dropout(0.1))
model.add(LSTM(128, activation = 'relu', return_sequences = True))
model.add(Conv1D(32, kernel_size= 1, input_shape = (None, 128, 1), activation = 'relu'))
model.add(Flatten())
model.add(Dense(1))

【讨论】:

  • '{{node conv1d_12/conv1d}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1 从 1 中减去 3 导致的负维度大小], explicit_paddings=[], padding="VALID", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](conv1d_12/conv1d/ExpandDims, conv1d_12/conv1d/ExpandDims_1)' 输入形状:[?, 1,1,128],[1,3,128,32]。
  • 它在我的电脑上运行良好。顺便把kernel_size = 1改成Conv1D
  • 通过更改 kernel_size =1 得到修复
  • # 设计网络 # model = Sequential() # model.add(LSTM(64, return_sequences = True, input_shape=(X_train.shape[1], X_train.shape[2]),activation= 'relu')) # model.add(Dropout(0.1)) model.add(LSTM(128, activation='relu', return_sequences=True)) model.add(Conv1D(32, kernel_size=1, activation='relu ')) model.add(Flatten()) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam')
  • 如果它解决了您的问题,您能否通过单击左侧的勾号图标来接受答案?
猜你喜欢
  • 2021-06-17
  • 2021-01-21
  • 2022-12-10
  • 2021-05-19
  • 2021-08-10
  • 2021-10-18
  • 2021-09-23
相关资源
最近更新 更多