Ошибка формы для слоя LSTM в моей модели классификации изображений

#python #recurrent-neural-network #conv-neural-network

#python #рекуррентная нейронная сеть #conv-нейронная сеть

Вопрос:

Здравствуйте, я пытаюсь классифицировать изображения в оттенках серого (224×224), и я пытаюсь использовать LSTM для этого, но я продолжаю получать ошибки формы

мой генератор данных поезда выглядит следующим образом:

 def train_datagenerator(train_batchsize):
train_datagen = ImageDataGenerator(
    rescale=1 / 255.0,
    rotation_range=20,
    zoom_range=0.05,
    width_shift_range=0.05,
    height_shift_range=0.05,
    shear_range=0.05,
    horizontal_flip=True,
    fill_mode="nearest")

train_generator = train_datagen.flow_from_directory(train_dir,
                                                    target_size=(image_size, image_size),
                                                    batch_size=train_batchsize,
                                                    class_mode='categorical')
return train_generator
  

это мой код для моей модели:

 def LSTM_model():

 model = Sequential()
 model.add(LSTM(512, input_shape=(224, 224)))
 model.add(Flatten())
 model.add(Dense(1024))
 model.add(Activation('relu'))
 model.add(Dense(50))
 model.add(Activation('sigmoid'))
 model.add(Dense(3))  
 model.add(Activation('softmax'))


 model.build()
 model.summary()
 return model 
  

model.fit

 def train(model):
train_generator = train_datagenerator(train_batchsize)
model.compile(loss='categorical_crossentropy',
              #optimizer='sgd',
              optimizer='adam',
              metrics=['acc'])
train_start = time.clock()

print('Started training...')
history = model.fit_generator(train_generator,
                              steps_per_epoch=train_generator.samples / train_generator.batch_size,
                              epochs=epochs,
                              verbose=1)

train_finish = time.clock()
train_time = train_finish - train_start
print('Training completed in {0:.3f} minutes!'.format(train_time / 60))

print('Saving the trained model...')
model.save('/content/drive/My Drive/Project/trained_models/rnn_model.h5')
print("Saved trained model in 'trained_models/ folder'!")

return model, history
  

Я получаю эту ошибку: ввод 0 слоя lstm_5 несовместим со слоем: ожидаемый ndim = 3, найдено ndim = 2. Получена полная форма: [Нет, 150528]

Пожалуйста, помогите

Ответ №1:

Я не уверен, но можете ли вы попробовать это

model.add(LSTM(512, return_sequences=True, input_shape=(224, 224)))

Комментарии:

1. Я попробовал, и теперь я получаю эту ошибку: ввод 0 слоя lstm_6 несовместим со слоем: ожидаемый ndim = 3, найдено ndim = 4. Получена полная форма: [Нет, 224, 224, 1]

2. @Raja можете ли вы поделиться своей моделью.fit, обычно генератор поездов возвращает [batch_size, img_size, img_size, channel_size] . Или вы можете поделиться своим кодом?

3. Я просто поделился этим в своем вопросе. вы можете увидеть это там. и большое спасибо за ваше время.

4. Здравствуйте. Я попробовал это, и теперь я получаю эту ошибку: ошибка значения: ввод 0 слоя sequential_27 несовместим со слоем: ожидаемый ndim = 3, найдено ndim = 4. Получена полная форма: [Нет, нет, нет, нет]

5. @Raja привет, Раджа, я просто проверяю классификацию серого изображения с помощью lstm keras, но я не могу найти четкого ответа, может быть, по этой ссылке https://github.com/keras-team/keras/issues/7927 помогает вам, мне очень жаль.