如果我切换到 Python 2.x,它会执行 10 个周期。这是为什么呢?
训练逻辑回归模型
import keras.backend as K from keras.models import Sequential from keras.layers import Dense, Activation from keras.optimizers import SGD from sklearn.model_selection import train_test_split, cross_val_score X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42)# 注意:如果我在 Python 3.x 中运行这个,它只会执行 1 个周期K.clear_session()model = Sequential()model.add(Dense(1, input_shape=(4,), activation='sigmoid'))model.compile(loss = 'binary_crossentropy', optimizer= 'sgd', metrics = ['accuracy'])# 保存拟合的结果,以便将历史记录显示为数据框,并查看模型的表现history = model.fit (X_train, y_train)result = model.evaluate(X_test, y_test)
输出:
Epoch 1/10960/960 [==============================] - 0s - loss: 0.7943 - acc: 0.5219 Epoch 2/10960/960 [==============================] - 0s - loss: 0.7338 - acc: 0.5469 Epoch 3/10960/960 [==============================] - 0s - loss: 0.6847 - acc: 0.5688 Epoch 4/10960/960 [==============================] - 0s - loss: 0.6446 - acc: 0.6177 Epoch 5/10960/960 [==============================] - 0s - loss: 0.6113 - acc: 0.6719 Epoch 6/10960/960 [==============================] - 0s - loss: 0.5832 - acc: 0.7000 Epoch 7/10960/960 [==============================] - 0s - loss: 0.5591 - acc: 0.7177 Epoch 8/10960/960 [==============================] - 0s - loss: 0.5381 - acc: 0.7365 Epoch 9/10960/960 [==============================] - 0s - loss: 0.5196 - acc: 0.7542 Epoch 10/10960/960 [==============================] - 0s - loss: 0.5031 - acc: 0.7688 32/412 [=>............................] - ETA: 0s
回答:
fit 函数的参数 epochs
的默认值为 1
。
fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
然而,之前的默认值是 10
。例如,可以查看 models.py
中 fit
函数的更改,详见 这个提交。您很可能在 Python 2 中使用的是较旧版本的 Keras。