我正在尝试在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个样本) .