Керас несовместимых форм - PullRequest
0 голосов
/ 24 октября 2019

У меня есть набор для обучения и тестирования со следующими измерениями:

X_train.shape = (1,10767,11) and y_train.shape = (1,10767,3)

Я пытаюсь реализовать CNN, чтобы предсказать y_train. Архитектура моей модели выглядит следующим образом:

model = keras.models.Sequential()

model.add(Conv1D(32, kernel_size=5, strides=2, activation='relu', input_shape= (None,11)))
model.add(Conv1D(64, kernel_size=2, strides=1, activation='relu'))       
model.add(Dense(64, activation='relu'))
model.add(Dense(3, activation='sigmoid'))   # Final Layer using Softmax
epochs = 10
lrate = 0.01
decay = lrate/epochs
sgd = SGD(lr=lrate,momentum=0.9,decay=decay, nesterov=False)
model.compile(loss='mean_squared_error', optimizer='sgd', metrics = ['mse'])

Однако, когда я использую подгонку, после печати моей первой эпохи я получаю следующую ошибку:

Несовместимые формы: [1,5381,3] против [1,10767,3]

Я пытался добавить слой Flatten перед моим последним плотным слоем, однако проблема в том, что форма не полностью определена, что делаетмне изменить мою input_shape на (10767,11). Тем не менее, во время подгонки я все еще получаю ошибку:

ожидал, что плотность_99 будет иметь 2 измерения, но получил массив с формой (1, 10767, 3)

, который является моимпоследний плотный слой.

Если я попытаюсь уменьшить размеры во входной форме и в моих данных, он скажет, что ожидалось измерение 3, а я дал измерение 2.

1 Ответ

1 голос
/ 24 октября 2019

Я считаю, что проблема с формой данных y_train. Я изменил форму так:

y_train=np.ones((1,5381,3))

и не получил ошибок. Так как вы шагаете на 2 в первом уровне свертки, количество 1D шагов уменьшается в 2 раза (минус размер ядра 5) по всей сети. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...