Keras fit()不会在连续呼叫中重新训练模型

时间:2016-09-07 22:08:54

标签: python deep-learning theano keras

在与Keras玩游戏之后,我意识到不知何故,models.fit()在再次调用参数后不再重新训练参数。

以下是我的玩具示例。我把models.fit()调用了6次,在第四个时期,我用一个全新的数据集来训练它。 应该发生的是模型应该在第四次迭代时改变,因此第五次迭代应该产生不同的分数作为第三次迭代。但是,这不是正在发生的事情。

model = Sequential()

model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(1, 199, 40)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(32, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(2))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

nb_epoch = 6

# I know you can add nb_epoch into the fit function, but please ignore that for now
for e in range(nb_epoch):
    if e ==3:
        # For the third epoch only, let's train the model 
        # on a completely new dataset
        model.fit(X_train1, y_train1, nb_epoch=1, batch_size=batch_size)
    else:
        model.fit(X_train2, y_train2, nb_epoch=1, batch_size=batch_size)

结果:

546/546 [==============================] - 11s - loss: 4.0249 - acc: 0.6996
Epoch 1/1
546/546 [==============================] - 11s - loss: 4.0443 - acc: 0.7491
Epoch 1/1
546/546 [==============================] - 11s - loss: 4.0443 - acc: 0.7491
Epoch 1/1
365/365 [==============================] - 7s - loss: 3.7977 - acc: 0.7644
Epoch 1/1
546/546 [==============================] - 11s - loss: 4.0443 - acc: 0.7491
Epoch 1/1
546/546 [==============================] - 11s - loss: 4.0443 - acc: 0.7491

在第二次迭代对模型完全没有影响之后,似乎就像调用model.fit一样。即使给出了新的数据。

有关为何发生这种情况的任何想法? 我也尝试过train_on_batch,它会产生相同的结果。

0 个答案:

没有答案