【发布时间】:2019-02-05 15:21:50
【问题描述】:
我正在尝试为回归问题创建一个 ResNet50 模型,输出值范围为 -1 到 1。
我省略了 classes 参数,并在我的预处理步骤中将图像大小调整为 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,)
查看模型摘要,这是有道理的,因为最终 Dense 层的输出形状为 (None, 1000)
fc1000 (Dense) (None, 1000) 2049000 avg_pool[0][0]
但我不知道如何修改模型。我通读了 Keras 文档并查看了几个示例,但我看到的几乎所有内容都是针对分类模型的。
如何修改模型以使其格式正确以进行回归?
【问题讨论】:
标签: keras keras-layer resnet