为什么神经网络上的成本函数会增加?

数据挖掘 神经网络 深度学习
2022-02-15 06:10:04

我正在训练一个两层神经网络并在迭代期间输出成本函数,并注意到成本函数随着迭代次数的增加而急剧增加。最初我怀疑是因为梯度下降的学习率太高,所以我从0.05改为0.005。但是,这根本没有帮助。任何建议都非常感谢!

以下是我的部分代码:

# construct model
y_pred = multilayer_perceptron(x, weights, biases)

# define cost function(mean squred error) and optimizer(gradient descent)
cost = tf.reduce_mean(tf.square(y - y_pred))
optimizer = tf.train.MomentumOptimizer(learning_rate = learning_rate, 
            momentum = momentum).minimize(cost)

EPOCHS = 100
# initialize parameters
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_op)
    for epoch_no in range(EPOCHS):
        _, c = sess.run([optimizer, cost], feed_dict={x:X_train , y:Y_train})
       print('Epoch number: {}, cost: {}'.format(epoch_no, c))

# For running test dataset
results, test_cost = sess.run([y_pred, cost], feed_dict={x:X_train, y:Y_train})
print('test cost: {:.3f}'.format(test_cost))
print(y_pred)

前 3 个 Epoch 的输出:

Epoch number: 0, cost: 509.89886474609375
Epoch number: 1, cost: 287486752.0
Epoch number: 2, cost: 2.262859251393233e+18
1个回答

原来我的激活函数选得不好。我为输出层选择了一个线性激活函数,其中确实应该选择 ReLu。更改激活函数后,成本函数下降得很好。我想这个解决方案是逐案工作的。愿它有所帮助。