神经网络优化过程

本文介绍了一种结合梯度下降法和随机梯度下降法优点的方法——混合梯度下降法,该方法通过每次只计算一部分训练数据(称为batch)的损失函数来减少计算量,并利用矩阵运算提高效率。这种方法不仅减少了迭代次数,还提高了收敛速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了综合梯度下降算法和随机梯度下降算法的优缺点,在实际应用中一般采用这两种算法的折中(每次计算一小部分训练数据的损失函数),这一小部分数据被称为一个batch。通过矩阵运算,每次在一个batch上优化神经网络的参数并不会比单个数据慢太多。另一方面,每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛的结果更加接近梯度下降的效果。以下代码给出了在TensorFlow中如何实现神经网络的训练过程。本书所有的样例中,神经网络的训练大致遵循以下过程。

import tensorflow as tf
from numpy.random import RandomState

batch_size = n
#每次读取一部分数据作为当前的训练数据来执行反向传播算法
x = tf.placeholder(tf.float32, shape=(batch_size, 2), name='x-input')
y_ = tf.placeholder(tf.float32, shape=(batch_size, 1), name='y-input')

#定义神经网络结构和优化算法
loss = ..
train_step = tf.train.AdamOptimizer(0.001).minimize(loss)

#训练神经网络.
with tf.Session() as sess:
    #参数初始化。
    ...
#    迭代的更新参数
    for i in range(STEPS):
        #准备batch_size个训练数据。一般将所有的训练数据随机打乱之后再选取可以得到的更好的优化效果。
        current_X, current_y -...
        sess.run(train_step, feed_dict={x: current_X, y_: current_Y})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值