首页 > 其他分享 >权重衰退——pytroch版

权重衰退——pytroch版

时间:2023-07-30 14:12:45浏览次数:44  
标签:loss num 权重 torch pytroch 衰退 train d2l test

import torch
from torch import nn
from d2l import torch as d2l

# 将数据做的很小,这样容易实现过拟合
n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
train_data = d2l.synthetic_data(true_w, true_b, n_train)
train_iter = d2l.load_array(train_data, batch_size)
test_data = d2l.synthetic_data(true_w, true_b, n_test)
test_iter = d2l.load_array(test_data, batch_size, is_train=False)

# 初始化参数模型
def init_params():
    w = torch.normal(0, 1, size=(num_inputs, 1), requires_grad=True)
    b = torch.zeros(1, requires_grad=True)
    return [w, b]

# L2范数惩罚
def l2_penalty(w):
    return torch.sum(w.pow(2))/2

# 训练
def train(lambd):
    # 初始化参数
    w,b=init_params()
    # 线性回归,平方损失函数
    net,loss=lambda x:d2l.linreg(x,w,b),d2l.squared_loss
    num_epochs,lr = 100,0.003
    animator = d2l.Animator(xlabel='epochs',ylabel='loss',yscale='log',
                            xlim=[5,num_epochs],legend=['train','test'])
    for epoch in range(num_epochs):
        for x,y in train_iter:
            # 增加了l2范数惩罚项
            # 广播机制使l2_penalty(w)成为一个长度为batch_size的向量
            l = loss(net(x),y)+lambd*l2_penalty(w)
            l.sum().backward()
            d2l.sgd([w,b],lr,batch_size)
        if (epoch+1)%5==0:
            animator.add(epoch+1,(d2l.evaluate_loss(net,train_iter,loss),
                                  d2l.evaluate_loss(net,test_iter,loss),))
    print('w的L2范数是:',torch.norm(w).item())

# 使用权重参数
# train(lambd=10)
import torch
from torch import nn
from d2l import torch as d2l

# 将数据做的很小,这样容易实现过拟合
n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
train_data = d2l.synthetic_data(true_w, true_b, n_train)
train_iter = d2l.load_array(train_data, batch_size)
test_data = d2l.synthetic_data(true_w, true_b, n_test)
test_iter = d2l.load_array(test_data, batch_size, is_train=False)

# 初始化参数模型
def init_params():
    w = torch.normal(0, 1, size=(num_inputs, 1), requires_grad=True)
    b = torch.zeros(1, requires_grad=True)
    return [w, b]

# L2范数惩罚
def l2_penalty(w):
    return torch.sum(w.pow(2))/2

# 训练
def train(lambd):
    # 初始化参数
    w,b=init_params()
    # 线性回归,平方损失函数
    net,loss=lambda x:d2l.linreg(x,w,b),d2l.squared_loss
    num_epochs,lr = 100,0.003
    animator = d2l.Animator(xlabel='epochs',ylabel='loss',yscale='log',
                            xlim=[5,num_epochs],legend=['train','test'])
    for epoch in range(num_epochs):
        for x,y in train_iter:
            # 增加了l2范数惩罚项
            # 广播机制使l2_penalty(w)成为一个长度为batch_size的向量
            l = loss(net(x),y)+lambd*l2_penalty(w)
            l.sum().backward()
            d2l.sgd([w,b],lr,batch_size)
        if (epoch+1)%5==0:
            animator.add(epoch+1,(d2l.evaluate_loss(net,train_iter,loss),
                                  d2l.evaluate_loss(net,test_iter,loss),))
    print('w的L2范数是:',torch.norm(w).item())

# 使用权重参数
# train(lambd=10)

 

标签:loss,num,权重,torch,pytroch,衰退,train,d2l,test
From: https://www.cnblogs.com/jinbb/p/17591368.html

相关文章

  • 丢弃法——pytroch版
    importtorchfromtorchimportnnfromd2limporttorchasd2ldefdropout_layer(x,dropout):assert0<=dropout<=1ifdropout==1:returntorch.zeros_like(x)ifdropout==0:returnx#取0-1上的均匀随机分布,>dropout则=1,否......
  • softmax回归模型——pytroch版
    importtorchfromIPythonimportdisplayfromd2limporttorchasd2l#fromd2l.mxnetimportAccumulatorbatch_size=256#每次读256张图片,返回训练iter和测试itertrain_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)num_inputs=784num_outputs......
  • softmax回归模型simple——pytroch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lbatch_size=256train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)#PyTorch不会隐式地调整输入的形状。因此,#我们在线性层前定义了展平层(flatten),来调整网络输入的形状net=nn.Sequenti......
  • 3-使用@task设置测试用例执行的权重
    多个测试链路压测使测试任务按预想的比例执行locust的@task装饰器提供了入参weight,locust执行测试任务时,会根据weight的比例进行分配用户数fromlocustimporttask,HttpUserclassMyTestUser(HttpUser):#test_01:test_02=3:1@task(3)defweight_tes......
  • pytorch权重初始化
    PyTorch权重初始化在使用PyTorch进行深度学习模型开发时,权重初始化是非常重要的一步。合适的权重初始化可以加速模型的收敛速度,提高模型的性能。本文将介绍PyTorch中权重初始化的步骤和常用的方法,并展示相应的代码示例。权重初始化流程下面是PyTorch中权重初始化的基本流程:......
  • 关于保存自己的权重参数
    关于保存自己的权重参数有的模型自己可以保存权重模型文件,那如果没有自己该怎么保存呢?首先我们可以先查看一下,人家自带的权重模型文件,一般是.pt或.pth的文件,运行以下代码:importtorchmy_weights=torch.load(r'权重文件地址')print('len=',len(my_weights.keys())......
  • 权重
    标签选择器的权重后代选择器的权重是求和的标签选择器的权重 0001class的选择器的权重0010id选择器的权重是0100!impcrtant权重最高的不建议大量使用通配符选择器的权重是最小的.0000 权重越高优先级越高 权重一样是 看先后顺序  后面的覆盖前面的 ......
  • 4.5 权重衰减
    统计学习方法中指出,在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的模型才是最好的模型。如果我们想要让模型变得更小,可以通过减小模型的参数量以及减小各参数的取值范围来实现。权重衰退就是要减小参数的取值范围。具体来说是这样做的:我们用一个θ来限制各个参数wi......
  • consul 使用总结 & Nginx 负责均衡,最大连接数据,超时次数,超时等待时间,权重
    consul使用总结&Nginx负责均衡,最大连接数据,超时次数,超时等待时间,权重consulagnet-dev启动consul启动服务,注册服务:dotnetOrderServer.dll--urls="http://:5189"--ip="127.0.0.1“--port=5189dotnetOrderServer.dll--urls="http://:5188"--ip="127.0.0......
  • 基于形态学的权重自适应图像去噪 MATLAB数字图像处理 基于形态学的权
    基于形态学的权重自适应图像去噪MATLAB数字图像处理基于形态学的权重自适应图像去噪代码工程目录及运行截图如下ID:3819621462763524......