Попытка настроить слой Conv1D в качестве входного слоя в кератах.
Набор данных имеет 1000 временных шагов, и каждый временной шаг имеет 1 особенность.
Прочитав кучу ответов, я изменил свой набор данных в следующий формат (n_samples, временные шаги, функции), что соответствует следующему в моем случае:
train_data = (78968, 1000, 1)
test_data = (19742, 1000, 1)
train_target = (78968,)
test_target = (19742,)
Позже я создаю и компилирую код, используя следующие строки
model = Sequential()
model.add(Conv1D(64, (4), input_shape = (1000,1) ))
model.add(MaxPooling1D(pool_size=2))
model.add(Dense(1))
optimizer = opt = Adam(decay = 1.000-0.999)
model.compile(optimizer=optimizer,
loss='mean_squared_error',
metrics=['mean_absolute_error','mean_squared_error'])
Затем я пытаюсь уместить, обратите внимание, что train_target и test_target - это серии панд, поэтому я вызываю DataFrame.values для преобразования в массив numpy, я подозреваю, что там может быть проблема?
training = model.fit(train_data,
train_target.values,
validation_data=(test_data, test_target.values),
epochs=epochs,
verbose=1)
Модель компилируется, но я получаю сообщение об ошибке, когда пытаюсь соответствовать
Error when checking target: expected dense_4 to have 3 dimensions,
but got array with shape (78968, 1)
Я пробовал каждую комбинацию изменения данных и не могу заставить это работать.
Раньше я использовал керасы с плотными слоями только для другого проекта, где вместо input_shape был указан конкретный input_dimension, поэтому я не уверен, что я делаю здесь неправильно. Я прочитал почти каждый вопрос о переполнении стека о проблемах формы данных, и я боюсь, что проблема в другом месте, любая помощь приветствуется, спасибо.