神经网络优化(一)

一、损失函数(loss) [前向传播的预测值y与已知答案y_的差距]:

  1.优化目标:使loss达到最小值。

  2.优化方法:均方误差(mse)

        交叉熵(ce)

        自定义

详解:

1.均方误差mse:

公式:

函数:loss_mse = tf.reduce_mean(tf.square(y_ - y))

tf.reduce_mean(x)  :表示计算所有元素的平均值。

2.交叉熵cs: 表征两个概率分布之间的距离

公式:

函数:ce = -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y, 1e-12, 1.0)))

也可以写成:ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits = y, labels = tf.argmax(y_,1))

      cem = tf.reduce_mean(ce)

二、学习率:每次更新的幅度

公式:

优化目的:找到损失函数最小点。

注意:学习率设置大了,不收敛,设置小了收敛速度慢

指数衰减学习率:

global_step = tf.Variable(0, trainable = False)    //记录运行了多少轮,设置为不可训练参数

learning_rate = tf.train.exponential_decay(LEARNING_RATE_BASE,global_step,LEARNING_RATE_STEP,LEARNING_RATE_DECAY,staircase = Ture)

参数:学习率基数,训练轮数,学习率多少次更新一次,(Ture为梯形下降,false为指数型下降)

原文地址:https://www.cnblogs.com/brillant-ordinary/p/9700407.html

时间: 2024-11-10 11:34:24

神经网络优化(一)的相关文章

【零基础】神经网络优化之Adam

一.序言 Adam是神经网络优化的另一种方法,有点类似上一篇中的“动量梯度下降”,实际上是先提出了RMSprop(类似动量梯度下降的优化算法),而后结合RMSprop和动量梯度下降整出了Adam,所以这里我们先由动量梯度下降引申出RMSprop,最后再介绍Adam.不过,由于RMSprop.Adam什么的,真的太难理解了,我就只说实现不说原理了. 二.RMSprop 先回顾一下动量梯度下降中的“指数加权平均”公式: vDW1 = beta*vDW0 + (1-beta)*dw1 vDb1 = b

tensorflow:实战Google深度学习框架第四章02神经网络优化(学习率,避免过拟合,滑动平均模型)

1.学习率的设置既不能太小,又不能太大,解决方法:使用指数衰减法 例如: 假设我们要最小化函数 y=x2y=x2, 选择初始点 x0=5x0=5 1. 学习率为1的时候,x在5和-5之间震荡. import tensorflow as tf TRAINING_STEPS = 10 LEARNING_RATE = 1 x = tf.Variable(tf.constant(5, dtype=tf.float32), name="x") y = tf.square(x) train_op

tensorflow(2):神经网络优化(loss,learning_rate)

案例: 预测酸奶的日销量, 由此可以准备产量, 使得损失小(利润大),假设销量是y , 影响销量的有两个因素x1, x2, 需要预先采集数据,每日的x1,x2和销量y_, 拟造数据集X,Y_, 假设y_=x1+x2,为了更真实加一个噪声(-0.05-0.05) batch_size=8 #一次喂给神经网络多少数据 seed=23455 #构造数据集 rdm=np.random.RandomState(seed) #基于seed产生随机数 X=rdm.rand(32,2) #32组数据 Y_=[[

tensorflow(3):神经网络优化(ema,regularization)

1.指数滑动平均 (ema) 描述滑动平均: with tf.control_dependencies([train_step,ema_op]) 将计算滑动平均与 训练过程绑在一起运行 train_op=tf.no_op(name='train')  使它们合成一个训练节点 #定义变量一级滑动平均类 #定义一个32位浮点变量,初始值为0.0, 这个代码就是在不断更新w1参数,优化 w1,滑动平均做了一个w1的影子 w1=tf.Variable(0,dtype=tf.float32) #定义num

人工智能实践:神经网络优化

损失函数 神经元模型:用数学公式表示为:,f为激活函数. 神经网络:是以神经元为基本单元构成的. 激活函数:引入非线性激活因素,提高模型的表达力. 常用的激活函数有relu.sigmoid.tanh等. ① 激活函数relu: 在Tensorflow中,用tf.nn.relu()表示        relu()数学表达式                      relu()数学图形 ② 激活函数sigmoid:在Tensorflow中,用tf.nn.sigmoid()表示           

神经网络优化(二) - 学习率

1 学习率的基本定义 学习率learning_rate:每次参数更新的幅度. 简单示例: 假设损失函数 loss = ( w + 1 )2,则梯度为 参数 w 初始化为 5 ,学习率为 0.2 ,则 运行次数 参数w值 计算 1次 5 5-0.2*(2*5+2) = 2.6 2次 2.6 2.6-0.2*(2*2.6+2) = 1.16 3次 1.16 1.16-0.2*(2*1.16+2) = 0.296 4次 0.296   2 学习率的初步应用 2.1  学习率 0.2 时 # 已知损失函

神经网络优化(二) - 滑动平均

1 滑动平均概述 滑动平均(也称为 影子值 ):记录了每一个参数一段时间内过往值的平均,增加了模型的泛化性. 滑动平均通常针对所有参数进行优化:W 和 b, 简单地理解,滑动平均像是给参数加了一个影子,参数变化,影子缓慢追随. 滑动平均的表示公式为 影子 = 衰减率 * 影子 + ( 1 - 衰减率 ) * 参数 或 滑动平均值 = 衰减率 * 滑动平均值 + ( 1 - 衰减率 )* 参数 备注 影子初值 = 参数初值 衰减率 = min{ MOVING_AVERAGE_DECAY, (1+轮

神经网络优化(二) - 正则化

---恢复内容开始--- 在机器学习中,有时候我们基于一个数据集训练的模型对该模型的正确率非常高,而该模型对没有见过的数据集很难做出正确的响应:那么这个模型就存在过拟合现象. 为了缓解或避免过拟合现象,我们通常用的方法是采用正则化方法(Regularization). 1 正则化基本理解 1.1 正则化公式的引入 正则化在损失函数中引入模型复杂度指标,利用给W加权值,弱化了训练数据的噪声(注:一般不正则化 b,仅正则化 w ) 1.2 loss(w)函数的两种表述方式 # 表达方式1 loss(

神经网络优化(二) - 搭建神经网络八股

为提高程序的可复用性,搭建模块化的神经网络八股 1 前向传播 前向传播就是设计.搭建从输入(参数 x ) 到输出(返回值为预测或分类结果 y )的完整网络结构,实现前向传播过程,一般将其放在 forward.py 文件中 前向传播需要定义三个函数(实际上第一个函数是框架,第二.三个函数是赋初值过程) def forward(x, regularizer): w = b = y = return y 函数功能: 定义前向传播过程,返回值为y 完成网络结构的设计,实现从输入到输出的数据通路 regu