我正在尝试针对二进制分类训练Inception V3,似乎出了点问题。我正在使用Keras进行实施。代码如下所示:
def Inception():
model = inception_v3.InceptionV3(include_top=False, weights='imagenet',
input_shape=(imageheight, imagewidth, 3))
x = model.output
x = Flatten()(x)
x = Dense(1, activation='softmax', name='predictions')(x)
model = Model(input=model.input, output=x)
# print(model.summary())
return model
我尝试用不同的值初始化权重,甚至尝试使用不同的优化器:
sgd = optimizers.SGD(lr = 5e-5, decay=1e-6, momentum=0.9, nesterov=True)
对于所有内容,我得到的输出是:
Epoch 1/100
611/611 [==============================] - 14s 23ms/step - loss: 11.5589 - acc: 0.2750 - val_loss: 11.5660 - val_acc: 0.2745
Epoch 2/100
611/611 [==============================] - 6s 9ms/step - loss: 11.5589 - acc: 0.2750 - val_loss: 11.5660 - val_acc: 0.2745
Epoch 3/100
611/611 [==============================] - 6s 9ms/step - loss: 11.5589 - acc: 0.2750 - val_loss: 11.5660 - val_acc: 0.2745
Epoch 4/100
611/611 [==============================] - 6s 9ms/step - loss: 11.5589 - acc: 0.2750 - val_loss: 11.5660 - val_acc: 0.2745
奇怪的是,当我在VGG16上使用相同的数据集时,它起作用了。唯一的这就是我从头开始编写VGG16的体系结构。
那我应该怎么做才能避免这种情况?
答案 0 :(得分:1)
使用activation='sigmoid'
进行二进制分类,而不是softmax
。