Python深度学习pyTorch权重衰减与L2范数正则化解析

 更新时间:2021年09月30日 12:14:06   作者:算法菜鸟飞高高  
这篇文章主要介绍了Python深度学习中的pyTorch权重衰减与L2范数正则化的详细解析,文中附含详细示例代码,有需要的朋友可以借鉴参考下

在这里插入图片描述

下面进行一个高维线性实验

假设我们的真实方程是:

在这里插入图片描述

假设feature数200,训练样本和测试样本各20个

模拟数据集

num_train,num_test = 10,10
num_features = 200
true_w = torch.ones((num_features,1),dtype=torch.float32) * 0.01
true_b = torch.tensor(0.5)
samples = torch.normal(0,1,(num_train+num_test,num_features))
noise = torch.normal(0,0.01,(num_train+num_test,1))
labels = samples.matmul(true_w) + true_b + noise
train_samples, train_labels= samples[:num_train],labels[:num_train]
test_samples, test_labels = samples[num_train:],labels[num_train:]

定义带正则项的loss function

def loss_function(predict,label,w,lambd):
    loss = (predict - label) ** 2
    loss = loss.mean() + lambd * (w**2).mean()
    return loss

画图的方法

def semilogy(x_val,y_val,x_label,y_label,x2_val,y2_val,legend):
    plt.figure(figsize=(3,3))
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.semilogy(x_val,y_val)
    if x2_val and y2_val:
        plt.semilogy(x2_val,y2_val)
        plt.legend(legend)
    plt.show()

拟合和画图

def fit_and_plot(train_samples,train_labels,test_samples,test_labels,num_epoch,lambd):
    w = torch.normal(0,1,(train_samples.shape[-1],1),requires_grad=True)
    b = torch.tensor(0.,requires_grad=True)
    optimizer = torch.optim.Adam([w,b],lr=0.05)
    train_loss = []
    test_loss = []
    for epoch in range(num_epoch):
        predict = train_samples.matmul(w) + b
        epoch_train_loss = loss_function(predict,train_labels,w,lambd)
        optimizer.zero_grad()
        epoch_train_loss.backward()
        optimizer.step()
        test_predict = test_sapmles.matmul(w) + b
        epoch_test_loss = loss_function(test_predict,test_labels,w,lambd)
        train_loss.append(epoch_train_loss.item())
        test_loss.append(epoch_test_loss.item())
    semilogy(range(1,num_epoch+1),train_loss,'epoch','loss',range(1,num_epoch+1),test_loss,['train','test'])

在这里插入图片描述
可以发现加了正则项的模型,在测试集上的loss确实下降了

以上就是Python深度学习pyTorch权重衰减与L2范数正则化解析的详细内容,更多关于Python pyTorch权重与L2范数正则化的资料请关注脚本之家其它相关文章!

相关文章

  • python中正则的使用指南

    python中正则的使用指南

    正则表达式(RE)是一种小型的、高度专业化的编程语言,它内嵌在Python中,并通过re模块实现。下面我们就来详细探讨下Python中正则表达式的使用
    2016-12-12
  • Python的Django框架中消息通知的计数器实现教程

    Python的Django框架中消息通知的计数器实现教程

    通知的计数器非常有用,新通知时+1和读过通知后的-1是最基本的功能,这里我们就来看一下Python的Django框架中消息通知的计数器实现教程
    2016-06-06
  • Python常用模块介绍

    Python常用模块介绍

    这篇文章主要介绍了Python常用模块介绍,本文罗列了如python运行时服务、数学、数据结构、算法和代码简化、string 和 text 处理、python数据库访问等模块,需要的朋友可以参考下
    2014-11-11
  • Python 3.9的到来到底是意味着什么

    Python 3.9的到来到底是意味着什么

    本文主要介绍Python3.9的一些新特性比如说更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API,感兴趣的朋友跟随小编一起看看吧
    2020-10-10
  • Python使用selenium + headless chrome获取网页内容的方法示例

    Python使用selenium + headless chrome获取网页内容的方法示例

    这篇文章主要介绍了Python使用selenium + headless chrome获取网页内容的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python实现上课点名器系统

    Python实现上课点名器系统

    今天给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,对Python上课点名器实现过程感兴趣的朋友,一起来看看是如何实现的吧
    2021-10-10
  • Python利用pdfplumber实现读取PDF写入Excel

    Python利用pdfplumber实现读取PDF写入Excel

    pdfplumber专注PDF内容提取,例如文本(位置、字体及颜色等)和形状(矩形、直线、曲线),还有解析表格的功能。本文主要为大家介绍如何利用pdfplumber实现读取PDF写入Excel,需要的可以参考一下
    2022-06-06
  • python3 实现函数写文件路径的正确方法

    python3 实现函数写文件路径的正确方法

    今天小编就为大家分享一篇python3 实现函数写文件路径的正确方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Django实现登录随机验证码的示例代码

    Django实现登录随机验证码的示例代码

    登录验证码是每个网站登录时的基本标配,这篇文章主要介绍了Django实现登录随机验证码的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 使用python爬虫获取黄金价格的核心代码

    使用python爬虫获取黄金价格的核心代码

    这篇文章主要介绍了利用python爬虫获取黄金价格,需要的朋友可以参考下
    2018-06-06

最新评论