我认为您需要尝试两件事(单位和时期):
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) 对于这样的任务,我建议只设置很多 epoch,因为它是特定任务,您的 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 -> 对于此任务,您需要依赖所有输入
所以,开始玩一个 epoch 并找出最佳准确度并观察 LOSS(当您的 LOSS 变小时,您的准确度会迅速增加),具体取决于多少单位。当找到最佳单位数量时,设置尽可能多的 epoch(尝试 10,然后 50...)。
希望,它会有所帮助。祝你好运!