我正在尝试构建一个解码拼图图像的编码器 - 解码器模型 . 基本上,我有一个图像,分为我想要重建的t * t相等大小的作物 .

我正在使用tensorflow支持的keras API .

我的编码器是预训练的CNN模型,其最后一层被移除 . 因此对于单个裁剪,其输出是具有256个特征的特征向量 . 现在我想 Build LSTM解码器,它应该返回图像中t * t作物的预测位置 . 这个想法是解码器将预测每个作物的位置,并考虑所有其他作物的位置预测 .

我不确定我是否按照我需要的方式使用TimeDistributed和LSTM层......我问的是因为完整的模型不会仅仅使用CNN部分(最后一层)产生任何改进的性能所以我一定做错了什么..

我的模特:

input_shape =  [t**2, image_size, image_size, num_channels]
model = Sequential()
# CNN model:
model.add(TimeDistributed(CNN, input_shape=input_shape))
model.add(Bidirectional(LSTM(128, dropout=0.3, recurrent_dropout=0.05, return_sequences=True)))
model.add(Bidirectional(LSTM(128, dropout=0.3, recurrent_dropout=0.05, return_sequences=True)))
model.add(Dense(128, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.3))
model.add(Dense(t**2, activation='softmax'))
output_shape = [t**2, t**2] # t**2 crops, each with a one-hot encoded position

这是做我的意图的正确方法吗?