Я пытаюсь создать модель ResNet50 для проблемы регрессии с выходным значением от -1 до 1.
Я пропустил аргумент классов, и на этапе предварительной обработки я изменил размер своих изображений до 224,224,3.
Я пытаюсь создать модель с
def create_resnet(load_pretrained=False):
if load_pretrained:
weights = 'imagenet'
else:
weights = None
# Get base model
base_model = ResNet50(weights=weights)
optimizer = Adam(lr=1e-3)
base_model.compile(loss='mse', optimizer=optimizer)
return base_model
а затем создайте модель, распечатайте сводку и используйте fit_generator для обучения
history = model.fit_generator(batch_generator(X_train, y_train, 100, 1),
steps_per_epoch=300,
epochs=10,
validation_data=batch_generator(X_valid, y_valid, 100, 0),
validation_steps=200,
verbose=1,
shuffle = 1)
Я получаю сообщение об ошибке
ValueError: Error when checking target: expected fc1000 to have shape (1000,) but got array with shape (1,)
Глядя на сводку модели, это имеет смысл, поскольку последний плотный слой имеет выходную форму (None, 1000).
fc1000 (Dense) (None, 1000) 2049000 avg_pool[0][0]
Но я не могу понять, как модифицировать модель. Я прочитал документацию Keras и просмотрел несколько примеров, но почти все, что я вижу, относится к модели классификации.
Как я могу изменить модель, чтобы она была правильно отформатирована для регрессии?