1D CNN в Керасе: выравнивание из объединенных объектов в плотный слой повышает ValueError - PullRequest
1 голос
/ 24 октября 2019

У меня определена следующая модель CNN. он ожидает 1D векторного ввода длиной 501.

model = ml.models.Sequential()
model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(None, 501)))
model.add(ml.layers.MaxPooling1D(pool_size=POOL_SIZE, padding='valid'))
model.add(ml.layers.Flatten())
model.add(ml.layers.Dense(HIDDEN_SIZE-1, activation=ACTIVATION))

Все же это вызывает ошибку значения:

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.

Я не уверен, почему Flatten не создает форму чего-то вроде(None, x), но вместо (None, None). В чем здесь проблема?

Это краткое описание модели:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d (Conv1D)              (None, None, 50)          250550    
_________________________________________________________________
max_pooling1d (MaxPooling1D) (None, None, 50)          0         
_________________________________________________________________
flatten (Flatten)            (None, None)              0         
=================================================================
Total params: 250,550
Trainable params: 250,550
Non-trainable params: 0
_________________________________________________________________

Ответы [ 2 ]

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

Layers Flatten преобразует формат изображений из двумерного массива (a, b) в одномерный массив (aXb). Выход пула слоя max_pooling1d (MaxPooling1D) (нет, нет, 50) двамассив (0,0). Так слой выравнивается: выравнивается (Flatten) (нет, отсутствует)

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

Я разобрался с решением. Я не правильно определил input_shape слоя Conv1D, вместо этого он должен быть:

model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(501, 1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...