#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 помогает вам, мне очень жаль.