Conv1D convolutional Autoencoder для текста в keras

Как я решаю эту проблему

ValueError: Ошибка при проверке цели: ожидается, что conv-decode3 будет иметь форму (Нет, 14, 300), но получен массив с формой (6559, 16, 300)

NUM_WORDS = 3
pool_size = 2
x = Input(shape=(16, 300), name="input")
h = x
h = Conv1D(filters=300, kernel_size=NUM_WORDS,
             activation="relu", padding='same', name='Conv1')(h)
h = MaxPooling1D(pool_size=pool_size, name='Maxpool1')(h)
h = Conv1D(filters=150, kernel_size=NUM_WORDS,
             activation="relu", padding='same', name='Conv2')(h)
h = MaxPooling1D(pool_size=pool_size,  name="Maxpool2")(h)
h = Flatten() (h)
h = Dense(10, name='embedding') (h)
y = h
y = Dense(600, activation="relu") (y)
y = Reshape((4, 150)) (y)
y = Conv1D(filters=150, kernel_size=NUM_WORDS,
             activation="relu", padding='same', name='conv-decode1')(y)
y = UpSampling1D(size=pool_size, name='upsampling1')(y)
y = Conv1D(filters=300, kernel_size=NUM_WORDS,
             activation="relu", padding='same', name='conv-decode2')(y)
y = UpSampling1D(size=pool_size, name='upsampling2')(y)


return Model(inputs=x, outputs=y, name='AE'), Model(inputs=x, outputs=h, name='encoder')

person Waseem Randhawa    schedule 29.03.2018    source источник


Ответы (1)


у вас все еще есть эта проблема? Ваш 1D AE не содержит определения слоя: conv-decode3

Я только что добавил компиляцию и распечатал модель - выглядит хорошо, входная форма равна выходной форме. Ян

y = UpSampling1D(size=pool_size, name='upsampling2')(y)

autoencoderM = Model(x, y)
myLoss='mean_squared_error'
autoencoderM.compile(optimizer='adadelta', loss=myLoss)

autoencoderM.summary() # will print


Слой (тип) Выходная форма Параметр #

ввод (InputLayer) (нет, 16, 300) 0


Conv1 (Conv1D) (Нет, 16, 300) 270300


. . .


conv-decode2 (Conv1D) (нет, 8, 300) 135300


апсемплинг2 (UpSampling1D) (Нет, 16, 300) 0

Всего параметров: 621 010

person Jan Balewski    schedule 30.03.2018