Tensorflow2.0学习笔记-复杂度、学习率

一、神经网络的复杂度

神经网络复杂度分为空间复杂度和时间复杂度
在这里插入图片描述

空间复杂度:

空间复杂度由层数,和待优化参数的个数进行表示。
层数 = 隐藏层的层数 + 1个输出层
总参数 = 总w + 总b
上图中参数:3x4+4 + 4x2+2 = 26

时间复杂度

时间复杂度使用神经网络的运算次数进行表示。

上图中3x4 + 4x2 =20

二、学习率

在使用中,我们可以使用指数衰减学习率来合理的设置学习率。我们可以先使用较大的学习率,快速得到最优解,然后使用指数衰减,逐渐减小学习率,使模型在训练后期稳定。
指数衰减学习率 = 初始学习率 * 学习衰减率 **(当前轮数/多少轮衰减一次)

w = tf.Variable(tf.constant(5, dtype=tf.float32))
epoch = 40
LR_BASE = 0.2  # 最初学习率
LR_DECAY = 0.99  # 学习率衰减率
LR_STEP = 2  # 喂入2轮后,更新一次学习率

for epoch in range(epoch):  # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环100次迭代。
    lr = LR_BASE * LR_DECAY ** (int(epoch / LR_STEP))
    with tf.GradientTape() as tape:  # with结构到grads框起了梯度的计算过程。
        loss = tf.square(w + 1.)
    grads = tape.gradient(loss, w)  # .gradient函数告知谁对谁求导

    w.assign_sub(lr * grads)  # .assign_sub 对变量做自减 即:w -= lr*grads 即 w = w - lr*grads
    print("After %s epoch,w is %f,loss is %f,lr is %f" % (epoch, w.numpy(), loss, lr))

#输出结果(可以观测到每两轮,学习率会衰减一次)
After 0 epoch,w is 2.600000,loss is 36.000000,lr is 0.200000
After 1 epoch,w is 1.160000,loss is 12.959999,lr is 0.200000
After 2 epoch,w is 0.304640,loss is 4.665599,lr is 0.198000
After 3 epoch,w is -0.211997,loss is 1.702086,lr is 0.198000
After 4 epoch,w is -0.520926,loss is 0.620948,lr is 0.196020
After 5 epoch,w is -0.708742,loss is 0.229512,lr is 0.196020
After 6 epoch,w is -0.821785,loss is 0.084831,lr is 0.194060    
.......
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值