首页 > 解决方案 > 检查目标时出错:预期 dense_1 有 2 个维度,但得到了形状为 (20, 84, 1) 的数组

问题描述

这是我第一次尝试 LSTM 层并且无法完成这项工作。我检查了 github bug tracker 和 SO 主题,但没有一个可用的解决方案解决了我的问题。

每当我更改密集层尺寸或数据形状时,我都会收到类似的错误。

Traceback (most recent call last):
  File "F:/Programowanie/GitHub Repositories/MYOPM/ui_main.py", line 640, in train_ml_algorithm
    self.ml.keras_LSTM_train()
  File "F:\Programowanie\GitHub Repositories\MYOPM\machine_learning.py", line 648, in keras_LSTM_train
    verbose=2)
  File "F:\Programowanie\GitHub Repositories\MYOPM\venv\lib\site-packages\keras\engine\training.py", line 1154, in fit
    batch_size=batch_size)
  File "F:\Programowanie\GitHub Repositories\MYOPM\venv\lib\site-packages\keras\engine\training.py", line 621, in _standardize_user_data
    exception_prefix='target')
  File "F:\Programowanie\GitHub Repositories\MYOPM\venv\lib\site-packages\keras\engine\training_utils.py", line 135, in standardize_input_data
    'with shape ' + str(data_shape))
ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (20, 84, 1)

我得到了仅包含二进制数据的 3d 数组:

火车- 形状 (20, 84, 147)

[[[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  ...
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]]

 ...

 [[1 0 0 ... 0 0 0]
  [1 0 0 ... 0 0 0]
  [1 0 0 ... 0 0 0]
  ...
  [0 0 0 ... 1 0 0]
  [0 0 0 ... 1 0 0]
  [0 0 0 ... 1 0 0]]

标签- 形状 (20, 84, 1)

[[[0]
  [0]
  [0]
  ...
  [1]
  [1]
  [1]]

...

[[1]
  [1]
  [1]
  ...
  [1]
  [1]
  [1]]

代码:

from keras.models import Sequential
from keras.layers import LSTM
from keras.layers.core import Dense, Dropout, Activation

model = Sequential()
model.add(LSTM(32, input_shape=(84, 147), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(32, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(train,
          label,
          epochs=100,
          batch_size=64,
          verbose=2)

模型摘要

标签: pythonkeraslstm

解决方案


推荐阅读