我明白了,主要问题是
EarlyStopping
太早停止了我的训练过程!另一个问题是学习率太低。
所以当我改变双参数设置时,我得到了正确的结果:
import numpy as np
from tensorflow import keras
x = np.arange(100)
error = np.random.rand(100,1).ravel()
y = 2*x + 200 + error
opt = keras.optimizers.Adam(lr=0.8) # <--- bigger lr
model = keras.Sequential([keras.layers.Dense(1, input_shape=[1])])
model.compile(optimizer=opt, loss='mse', metrics=['mae'])
early_stopping_callback = keras.callbacks.EarlyStopping(
patience=100, # <--- longer patience to training
monitor='val_loss',
mode='min',
restore_best_weights=True)
history = model.fit(x, y, epochs=2000, batch_size=16, verbose=1,
validation_split=0.2, callbacks=[early_stopping_callback])