tensorflow实战(五)——过拟合调参(2)及学习率动态调整

我们通过采取动态调整学习率的策略,缓解过拟合问题。
随着训练轮数的增加,学习率逐渐下降会使模型拟合的更好
在这里,我们设定网络结构为:

model = tf.keras.Sequential([
    # 0-255256个,故第一个参数为256,数据为三位数,故第三个参数为3
    Embedding(256, 3),
    LSTM(3, return_sequences=True),
    Dropout(0.2),
    LSTM(5),
    Dropout(0.2),
    Dense(2, activation='softmax')
])

N0.1

batch_size=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    initial_learning_rate=0.001,
    decay_steps=batch_size*1000,
    decay_rate=1,
    staircase=False)

InverseTimeDecay()函数:
initial_learning_rate:初始学习率
decay_steps:多少个steps进行一次衰减,其中一个epochs称为一轮,数据集一轮分为steps个batch进行,每个batchs中有batch_size条记录
decay_rate:衰减率

结果:准确率为0.895
在这里插入图片描述

N0.2

设定batch*100

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.001,
    decay_steps=batch*100,
    decay_rate=1,
    staircase=False)

结果:准确率为0.88
在这里插入图片描述

NO.3

调整初始学习率为0.005,batch*1000

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.0005,
    decay_steps=batch*1000,
    decay_rate=1,
    staircase=False)

结果:准确率为0.89
在这里插入图片描述

NO.4

设定decay_rate为2

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.001,
    decay_steps=batch*1000,
    decay_rate=2,
    staircase=False)

结果:准确率为0.89
在这里插入图片描述

NO.5

设定random_state为2,尝试其他数据集时,准确率为多少

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.001,
    decay_steps=batch*1000,
    decay_rate=1,
    staircase=False)

结果:准确率为0.88
在这里插入图片描述

NO.6

继续设定random_state为2,decay_rate=2

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.001,
    decay_steps=batch*1000,
    decay_rate=2,
    staircase=False)

结果:准确率为0.915
在这里插入图片描述

NO.7

改变网络结构

model = tf.keras.Sequential([
    # 0-255256个,故第一个参数为256,数据为三位数,故第三个参数为3
    Embedding(256, 3),
    LSTM(30, return_sequences=True),
    Dropout(0.2),
    LSTM(50),
    Dropout(0.2),
    Dense(2, activation='softmax')
])

学习率和NO.6相同

batch=32
lr_schedule = tf.keras.optimizers.schedules.InverseTimeDecay(
    0.001,
    decay_steps=batch*1000,
    decay_rate=2,
    staircase=False)

结果:准确率为0.915
在这里插入图片描述
惊讶发现改变网络结构,提高可训练参数数量使得曲线更加平缓,正确率更高

NO.8

参数与NO.7相同,将random_state改为1进行测试
结果:正确率为0.92
在这里插入图片描述

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值