Я думаю, вам нужно попробовать две вещи (единицы и эпохи):
1) Поиграйтесь с размером юнитов, для задания x = [4,0,4,3,2,4]
будет достаточно использовать один слой с 3 юнитами:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(3-9, activation=tf.keras.activations.relu, input_dim=1))
model.add(tf.keras.layers.Dense(1, activation=tf.keras.activations.linear))
2) А также для такой задачи я могу посоветовать просто установить много эпох, потому что это конкретная задача, и вашему NN нужно время, чтобы установить все параметры. Но также не устанавливайте много юнитов, потому что ваш NN часто может пойти другим путем.
Мой совет:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(3-100, activation=tf.keras.activations.relu, input_dim=1))
model.add(tf.keras.layers.Dense(3-100, activation=tf.keras.activations.relu))
model.add(tf.keras.layers.Dense(1, activation=tf.keras.activations.linear))
model.compile(
optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.mse,
metrics=['accuracy']
)
model.fit(x_train, y_train,
batch_size=1,
epochs=1-infinity,
verbose=1)
- Активация Relu (юниты не умрут)
- batch_size 1 -> для выполнения этой задачи вам необходимо использовать все входные данные
Итак, начните играть с одной эпохой, найдите лучшую точность и смотрите на LOSS (когда ваш LOSS будет маленьким, ваша точность будет быстро увеличиваться) в зависимости от того, сколько единиц. Чтобы найти наилучшее количество юнитов, установите столько эпох, сколько у вас есть времени (попробуйте 10, затем 50 ...).
Надеюсь, это поможет как-то. Удачи!