Преобразование вывода Keras ConvLSTM2D для ввода в Conv2D - PullRequest
0 голосов
/ 29 мая 2019

У меня есть модель, которую я использую для подачи изображений, и цель модели - сравнить с одним изображением, которое является выходным.

Размер всех / каждого изображения = [96,96,3]

Модель берет в папку, где всего 6 изображений, где 5 из них похожи на6-е изображение, и мы должны использовать 5 изображений (изображений с увеличенными изображениями), чтобы правильно предсказать 6-е изображение.В наборе тестов и обучающем наборе есть несколько таких папок

Я решил использовать CNN + LSTM для решения этой проблемы, что, как я считаю, будет лучше, чем просто использование простого CNN для решения этой проблемы, я уже пробовалобычный CNN и Увеличение изображения, которое достигает максимума в производительности.

Ниже приведена модель, которая у меня есть на данный момент, часть, в которой я комментирую, - это то, где у меня возникла проблема.* Чтобы помочь вывод этой модели для модели.summary () выше

Layer (type)                 Output Shape              Param #   
=================================================================
conv_lst_m2d_1 (ConvLSTM2D)  (None, 5, 96, 96, 32)     40448     
_________________________________________________________________
batch_normalization_1 (Batch (None, 5, 96, 96, 32)     128       
_________________________________________________________________
conv_lst_m2d_2 (ConvLSTM2D)  (None, 5, 96, 96, 32)     73856     
_________________________________________________________________
batch_normalization_2 (Batch (None, 5, 96, 96, 32)     128       
_________________________________________________________________
conv_lst_m2d_3 (ConvLSTM2D)  (None, 5, 96, 96, 32)     73856     
_________________________________________________________________
batch_normalization_3 (Batch (None, 5, 96, 96, 32)     128       
_________________________________________________________________
dropout_1 (Dropout)          (None, 5, 96, 96, 32)     0         
_________________________________________________________________
conv_lst_m2d_4 (ConvLSTM2D)  (None, 5, 96, 96, 32)     73856     
_________________________________________________________________
batch_normalization_4 (Batch (None, 5, 96, 96, 32)     128       
_________________________________________________________________
dropout_2 (Dropout)          (None, 5, 96, 96, 32)     0         
_________________________________________________________________
conv_lst_m2d_5 (ConvLSTM2D)  (None, 5, 96, 96, 3)      3792      
_________________________________________________________________
batch_normalization_5 (Batch (None, 5, 96, 96, 3)      12        
_________________________________________________________________
reshape_1 (Reshape)          (None, 5, 96, 96, 3)      0         
=================================================================
Total params: 266,332
Trainable params: 266,070
Non-trainable params: 262
_________________________________________________________________
  • Я получаю ошибку в последней строкемоей модели, когда я пытаюсь изменить форму и поместить свой выход BatchNorm_5 в Conv2D в качестве входа.

  • , который, как я понимаю, должен быть изменен на [Нет, 96,96, 3] .Вот где мне нужна помощь сообщества.

  • Почему мне нужна эта форма, потому что мое выходное изображение имеет такую ​​же
    форму, с которой нужно сравнивать.

  • Я хочу сделать это изменение с минимальной потерей информации.

Ошибка, которую я получаю, что очень правильно, но мне нужны идеи о том, как исправитьэта ошибка

Traceback (most recent call last):
  File "train.py", line 154, in <module>
    model.add(Conv2D(3, (3, 3), activation='relu', padding='same'))
  File "/home/sandeeppanku/anaconda3/envs/tensorflowpy1p11/lib/python3.6/site-packages/keras/engine/sequential.py", line 181, in add
    output_tensor = layer(self.outputs[0])
  File "/home/sandeeppanku/anaconda3/envs/tensorflowpy1p11/lib/python3.6/site-packages/keras/engine/base_layer.py", line 414, in __call__
    self.assert_input_compatibility(inputs)
  File "/home/sandeeppanku/anaconda3/envs/tensorflowpy1p11/lib/python3.6/site-packages/keras/engine/base_layer.py", line 311, in assert_input_compatibility
    str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer conv2d_1: expected ndim=4, found ndim=5
...