При скорости обучения sgd по умолчанию оптимизатор полностью выходит за пределы.
Попытка:
model.compile(optimizer='adam', loss='mean_squared_error')
У вас есть один вес и уклон. С небольшой настройкой скорости обучения эта модель сходится за несколько итераций.
Например:
TRAINING_DATA_SIZE = 200
opt=keras.optimizers.Adam(lr=0.1)
model.compile(opt, loss='mean_squared_error')
model.fit(xs, ys, epochs=50, validation_split=0.2, verbose=False)
print('w, b:', model.layers[0].get_weights())
print(model.predict([7.0]))
показывает:
w, b: [array([[0.5000057]], dtype=float32), array([0.49888334], dtype=float32)]
[[3.9989233]]
Что кажется разумным для целевого веса и смещения.