【发布时间】:2021-11-09 16:05:29
【问题描述】:
我想只使用ReLU 激活来训练网络并完全过拟合数据。然而,无论我使用多少不同的网络结构(例如,增加神经元和层的数量),我都无法达到接近于零的损失值。
重要的是要强调 i) 我不想使用另一个激活函数,并且 ii) 目前,我不会对数据点进行归一化。
n = 50
x = np.random.randint(50, 2000, (n, 10))
y = np.random.randint(600, 4000, (n, 1))
k = 16
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(10,)),
tf.keras.layers.Dense(k, activation='relu'),
tf.keras.layers.Dense(k, activation='relu'),
tf.keras.layers.Dense(k, activation='relu'),
tf.keras.layers.Dense(k, activation='relu'),
tf.keras.layers.Dense(1)
])
model.compile(loss='mse',optimizer = tf.keras.optimizers.Adam(learning_rate=0.0001))
model.fit(x, y, epochs=1000, batch_size=1, verbose=2)
我当前的网络非常普通,在我看来,ReLU 激活应该“轻松”记住/过度拟合数据,尤其是在考虑数据集的大小和维度时。我是否有可能在我的代码中做错了什么?或者我的网络无法正常工作的原因是什么?
【问题讨论】:
-
您是否尝试更改其他超参数?
-
@AloneTogether 嗨,是的,我做到了。我改变了学习率,附加了不同的回调。我不知道我还能做什么。
标签: python tensorflow machine-learning keras deep-learning