我正在尝试在Keras(Tensorflow后端)中制作卷积自动编码器,但它最后一层的尺寸存在问题:
m.add(Embedding(features, embedding_dims, input_length=maxlen, input_shape=(features, ) ))
m.add(Dropout(0.2))
m.add(Conv1D(filters, kernel_size, padding='valid', activation='relu', strides=1, input_shape=(features, ) ))
m.add(MaxPooling1D())
m.add(Conv1D(filters, kernel_size, padding='valid', activation='relu', strides=1, input_shape=(features, ) ))
m.add(UpSampling1D(input_shape=(m.layers[-1].output_shape) ))
模型摘要如下:
Layer (type) Output Shape Param #
=================================================================
embedding_1 (Embedding) (None, 11900, 60) 1765800
_________________________________________________________________
dropout_1 (Dropout) (None, 11900, 60) 0
_________________________________________________________________
conv1d_1 (Conv1D) (None, 11898, 70) 12670
_________________________________________________________________
max_pooling1d_1 (MaxPooling1 (None, 5949, 70) 0
_________________________________________________________________
conv1d_2 (Conv1D) (None, 5947, 70) 14770
_________________________________________________________________
up_sampling1d_1 (UpSampling1 (None, 11894, 70) 0
错误消息表示预期有三个维度:
ValueError: Error when checking target: expected up_sampling1d_1 to have 3 dimensions, but got array with shape (1108, 29430)
。但是,最后一层的输出是(None,5947,70),这是三维。 (1108,29430)是原始数据的维度(具有29430个特征的1108个样本)。