深度学习--Tensorflow笔记(一)

B站【北京大学】Tensorflow2.0

初学者:搭建神经网络的基础常识
因为随机初始化结果不同,可能每次训练的结果不同

神经网络实现分类

执行步骤

  1. 准备数据
    准备数据
  2. 搭建网络+参数优化
    该网络的输入为4,输出为3类。w1和b1的维度必须满足x*w1+b。
    在这里插入图片描述
  3. acc/loss可视化
    acc/loss可视化

学习率

学习率过小:收敛慢
学习率过大:无法收敛到最优解
除了设置合理的学习率外,可以使用指数衰减学习率

指数衰减学习率设置及代码

激活函数

sigmoid函数:
容易梯度消失,因为求导范围在[0,0.25]之间,经过多次相乘后趋于0。
relu函数:

  1. 改进随机初始化,避免过多负数特征送入relu函数内,造成神经元死亡。
  2. 设置更小的学习率,减少参数分布发生巨大变化,避免训练过程中产生负数进入relu。

激活函数设置技巧

损失函数

交叉熵损失CE:
两个概率分布之间的距离,距离越近损失越小。

tf.losses.categorical_crossentropy(y_,y)  # 计算y_和y的交叉熵损失值
tf.nn.softmax_cross_entropy_with_logits(y_,y)  # 先softmax修改概率分布,再计算交叉熵损失函数

过拟合

正则化缓解过拟合,用在损失函数中
反向用于更新参数

loss_regularization.append(tf.nn.l2_loss(w))  # l2正则化

优化器

梯度下降法,用于参数更新
求导得当前梯度,计算一阶动量mt,二阶动量Vt
SGD: 无moment
SGD原理
SGDM: 含moment(一阶动量)
mt:各时刻梯度方向的指数滑动平均值
β \beta β:接近于1的超参数
SGDM原理
Adagrad: 含二阶动量
可以对模型中的每个参数分配自适应学习率

Adagrad原理

RMSProp: 含二阶动量
Vt使用指数滑动平均值计算,表示过去一段时间的平均值
RMSProp原理
Adam: 结合SGDM一阶动量和RMSProp二阶动量
计算mt和Vt,在计算修正后的偏差,用偏差进行更新。
Adam原理
从实验结果来看,Adam大法效果最好,但耗时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值