练习4-权重衰减(李沐函数简要解析)

环境:练习1的环境

代码详解

0.导入库

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

1.初始化数据
这里初始化出train_iter test_iter 可以查一下之前的获取Fashion数据集后的数据格式与此对应

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)

2.简洁实现

这补充个多层的写法
optimizer = torch.optim.SGD([
{“params”: net[0].weight, “weight_decay”: wd},
{“params”: net[0].bias},
{“params”: net[1].weight, “weight_decay”: wd},
{“params”: net[1].bias},
{“params”: net[2].weight, “weight_decay”: wd},
{“params”: net[2].bias}
], lr=lr)

def train_concise(wd):#定义了一层线性层模型,输入特征个数是num_inputs(怎么来的?) 输出个数是1net=nn.Sequential(nn.Linear(num_inputs,1)) for param in net.parameters():#初始化w,b 按照(均值为0,方差为1)来初始化,b会被随机初始化为较小的值param.data.normal_()#定义损失函数loss=nn.MSELoss(reduction='none')num_epochs,lr=100,0.03#定义优化器(这里开始设置限制w^2对于损失函数的影响大小了 -> wd)#这段代码包含了神经网络第一层的所有参数,并且为这些参数应用了不同的设置或限制#因为这个模型只有一层trainer=torch.optim.SGD([{"params":net[0].weight,'weight_decay': wd},{"params":net[0].bias}], lr=lr)#x轴是epochs y轴是loss #x轴设置范围从第五轮到 最后一轮  y轴设置对数标度 对数标度:对原始数据进行对数变换后显示的#legend=['train', 'test']: 这为图表设置了图例,标识两条曲线分别代表训练集("train")和测试集("test")的损失值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:trainer.zero_grad()l = loss(net(X), y)l.mean().backward()trainer.step()if (epoch + 1) % 5 == 0:#相当于在animator增加数据点 epoch,训练平均损失,测试平均损失animator.add(epoch + 1,(d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))print('w的L2范数:', net[0].weight.norm().item())#开始测试
train_concise(0)

重点理解

1.权重衰减是怎么做到的:
Loss=Loss+lamb/2 * (w^2)
当w越大Loss越大,Loss越大,越要减小,也同时减小w
在这里插入图片描述

2.原理:
多个函数下如何算最值

3.代码实现:
trainer=torch.optim.SGD([
{“params”:net[0].weight,‘weight_decay’: wd},
{“params”:net[0].bias}], lr=lr)

参考视频:
https://www.bilibili.com/video/BV1Z44y147xA/?spm_id_from=333.999.0.0&vd_source=302f06b1d8c88e3138547635c3f4de52

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis的安全配置有哪些建议?如何防止未授权访问?Redis的监控与告警策略是怎样的?如何及时发现并解决潜在问题?

Redis的安全配置有哪些建议?如何防止未授权访问? Redis的安全配置对于保护系统免受未授权访问和其他潜在风险至关重要。以下是一些建议的安全配置措施: 设置密码并禁用不安全的命令: 为Redis实例设置一个强密码,确保密…

鸿蒙原生应用开发-ArkTS语言基础类库多线程CPU密集型任务TaskPool

CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程并发机制处理CPU密集型任务可以提高CPU利用率&#xf…

三款.NET代码混淆工具比较分析:ConfuserEx、Obfuscar和Ipa Guard

随着.NET应用程序的广泛应用,保护知识产权和防止逆向工程的需求逐渐增长。本文将详细介绍三款知名的.NET代码混淆工具:ConfuserEx、Obfuscar和Ipa Guard,帮助读者全面了解其功能特点和应用场景。 一、ConfuserEx ConfuserEx是一个.NET代码混…

文件太大无法拷贝到u盘怎么办?可能是这个隐藏原因~

有时候我们新买的U盘,明明有64G的存储空间,怎么一个4.5G的视频想保存到U盘里会提示“文件太大”无法保存呢? 常见的U盘格式有FAT、FAT32、NTFS等,其中FAT32不支持存储单个文件体积大于4G的文件。下面教大家如何对U盘格式进行检测呢…

二开飞机机器人群发,实现自动给多个频道发送消息

频道1 频道2 二开代码部分: const CChatIdListprocess.env.CHANNEL_CHAT_ID_LIST; var channelChatIdArray CChatIdList.split(,);channelChatIdArray.forEach(function(item) {console.log(item); // 这里可以替换为您需要对数组中每个值进行的操作bot.sendM…

个人开发App成功上架手机应用市场的关键步骤

目录 1. 苹果审核和APP备案 2. APP上架操作步骤 3. 审核和发布 4. 上线工作 总结 参考资料 在当前移动应用市场竞争激烈的背景下,个人开发App如何成功上架成为开发者们必须面对的重要任务。本文将重点介绍自建App上架至手机应用市场的流程,包括苹果…

HDOJ 2078

复习时间 Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑。xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第…

String类型详解

1. Java为何要创造String类 在C语言中,是没有String这个类型的,通常使用字符数组中存放一个个字符,再加上最后一个\0来表示/存放一个字符串.也可以使用一个字符指针指向字符串的首元素,直到遇到\0停止,再加上C语言头文件string.h中封装的函数,对于字符串的操作已经够用了. Java…

【自动化】C#下”半双工通信“读写问题说明与实例

半双工通信是一种单向通信方式,它允许数据在单一方向上传输,但不像全双工通信那样同时支持两个方向上的数据传输。在C#中,通过SerialPort类可以实现半双工通信。以下将详细说明半双工通信的读写问题,并提供一个实例。 半双工通信…

visual studio编译时,报错error MSB6006:“mt.exe”已退出,代码为31,原因及解决方案

错误 MSB6006 表示在 Visual Studio 的编译过程中,mt.exe(Microsoft Manifest Tool)执行失败,并返回了退出代码 31。mt.exe 主要用于处理 Windows 应用程序的清单文件(manifest files),这些文件…

python接口自动化正则表达式

在python接口自动化框架里面经常会用到正则表达式,主要是以下两种情况: 1,用python写一个正则表达式,实现对token数据的获取,只获取返回的cookie数据里面的accesstoken。如果对返回的cookie数据中的accesstoken进行获…

学完Python的7大就业方向,哪个赚钱最多?

“ 我想学Python,但是学完Python后都能干啥 ?” “ 现在学Python,哪个方向最简单?哪个方向最吃香 ?” “ …… ” 相信不少Python的初学者,都会遇到上面的这些问题。大家都知道Python很吃香,薪资…

DNS劫持怎么预防?

DNS劫持,也称为域名劫持,是一种网络攻击手段,攻击者通过拦截域名解析的请求,将用户重定向到恶意站点,以达到获取用户信息或谋取非法利益的目的。DNS劫持可以分为以下几种基本类型: 1.路由器DNS劫持&#x…

进程管理与计划任务管理

进程管理 1、查看进程 静态 ps -auxps -elf 动态 top pgrep 查看特定条件的进程 pgrep -l “log” pgrep -l "ssh"pgrep -l -U redhat pstree 查看进程树 pstree -aup 所有用户、进程id\详细信息pstree -ap redhat 查看redhat用户的进程 任务调…

如何实现在固定位置的鼠标连点

鼠大侠的鼠标连点功能是免费的 浏览器搜索下载鼠大侠,指定连点间隔和启动快捷键 点击设置,指定点击位置

MySQL数据库中的锁机制(通俗易懂)

总结 MySQL数据库中的锁机制主要用于管理并发操作,以确保数据的一致性和完整性。MySQL支持多种类型的锁,按粒度和使用场景主要分为以下几类: 全局锁: 全局锁(如FLUSH TABLES WITH READ LOCK)可以锁定整个数…

常见物联网模型优缺点简介

物联网模型多种多样,每种模型都有其独特的优点和局限性。以下是一些常见的物联网模型及其优缺点概述: 集中式模型: 优点: 数据管理和处理集中化,便于统一监控和维护。安全性较高,数据在中心节点进行统一加…

centos7 配置ip

查看网卡 [rootcentos ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverine…

Linux 常用操作命令大全

目录 一、命令大集合 1.1 whereis 1.2 which 1.3 sudo 1.4 grep 1.5 free 1.6 top 动态显示进程的状态 1.7 ps 静态显示进程信息 1.8 df 1.9 iostat 看IO性能状态 1.10 yum安装插件命令 1.11 rpm 1.12 scp远程拷贝 1.13 uname 二、linux网络命令 2.1 centos7 防火…