在Inception V3上进行训练时权重不变,但在VGG16上工作正常

时间:2018-09-12 09:23:24

标签: python-3.x keras conv-neural-network

我正在尝试针对二进制分类训练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的体系结构。

那我应该怎么做才能避免这种情况?

1 个答案:

答案 0 :(得分:1)

使用activation='sigmoid'进行二进制分类,而不是softmax