学习pytorch14 损失函数与反向传播

神经网络-损失函数与反向传播

  • 官网
  • 损失函数
    • L1Loss MAE 平均
    • MSELoss 平方差
    • CROSSENTROPYLOSS 交叉熵损失
      • 注意
      • code
  • 反向传播
    • 在debug中的显示
      • code

B站小土堆pytorch视频学习

官网

https://pytorch.org/docs/stable/nn.html#loss-functions
在这里插入图片描述

损失函数

在这里插入图片描述

L1Loss MAE 平均

在这里插入图片描述
在这里插入图片描述

import torchinput = torch.tensor([1, 2, 3], dtype=float)
# target = torch.tensor([1, 2, 5], dtype=float)
target = torch.tensor([[[[1, 2, 5]]]], dtype=float) # shape [1, 1, 1, 3]
input = torch.reshape(input, (1,1,1,3))
# target = torch.reshape(target, (1,1,1,3))
print(input.shape)
print(target.shape)loss1 = torch.nn.L1Loss()
loss2 = torch.nn.L1Loss(reduction="sum")
result1 = loss1(input, target)
print(result1) # tensor(0.6667, dtype=torch.float64)
result2 = loss2(input, target)
print(result2) # tensor(2., dtype=torch.float64)

MSELoss 平方差

在这里插入图片描述
在这里插入图片描述

import torchinput = torch.tensor([1, 2, 3], dtype=float)
# target = torch.tensor([1, 2, 5], dtype=float)
target = torch.tensor([[[[1, 2, 5]]]], dtype=float) # shape [1, 1, 1, 3]
input = torch.reshape(input, (1,1,1,3))
# target = torch.reshape(target, (1,1,1,3))
print(input.shape)
print(target.shape)loss_mse = torch.nn.MSELoss(reduction='mean')
result_mse = loss_mse(input, target)
print(result_mse) # tensor(1.3333, dtype=torch.float64)
loss_mse2 = torch.nn.MSELoss(reduction='sum')
result_mse2 = loss_mse2(input, target)
print(result_mse2)   # tensor(4., dtype=torch.float64)

CROSSENTROPYLOSS 交叉熵损失

https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html#torch.nn.CrossEntropyLoss
在这里插入图片描述
在这里插入图片描述
在神经网络中,默认log是以e为底的,所以也可以写成ln
在这里插入图片描述
在这里插入图片描述

注意

  1. 根据需求选择对应的loss函数
  2. 注意loss函数的输入输出shape

code

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWritertest_set = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor(),download=True)dataloader = DataLoader(test_set, batch_size=1)class MySeq(nn.Module):def __init__(self):super(MySeq, self).__init__()self.model1 = Sequential(Conv2d(3, 32, kernel_size=5, stride=1, padding=2),MaxPool2d(2),Conv2d(32, 32, kernel_size=5, stride=1, padding=2),MaxPool2d(2),Conv2d(32, 64, kernel_size=5, stride=1, padding=2),MaxPool2d(2),Flatten(),Linear(1024, 64),Linear(64, 10))def forward(self, x):x = self.model1(x)return xloss = nn.CrossEntropyLoss()
myseq = MySeq()
print(myseq)
for data in dataloader:imgs, targets = dataprint(imgs.shape)output = myseq(imgs)result = loss(output, targets)print(result)

反向传播

在debug中的显示

显示在网络结构中,每一层的保护属性中,都有weight属性,梯度属性在weitht属性里面
先找模型结构 在找每一层 在找weight权重,梯度在weight权重里面

在这里插入图片描述

code

核心代码:result_loss.backward() # 要在最后获取 backward函数要挂在通过loss函数计算后的结果上。

# 模型定义、数据加载 同上个代码
for data in dataloader:imgs, targets = dataprint(imgs.shape)output = myseq(imgs)result_loss= loss(output, targets)result_loss.backward()  # 要在最后获取print(result_loss)print(result_loss.grad)

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

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

相关文章

食品软水树脂和工业软水树脂有什么区别?高盐水除钙镁应选择什么树脂?

在食品、饮料、制药、汽车制造、化工、电子、制革、钢铁、纺织等许多行业中,水的质量对产品的质量有非常重要的影响。 软化水可以有效改善水质,减少水中钙、镁离子含量,避免水垢形成,从而减少加热和冷却设备的能源消耗&#xff0c…

元梦之星内测上线,如何在B站打响声量?

元梦之星是腾讯天美工作室群研发的超开星乐园派对手游,于2023年1月17日通过审批。该游戏风格可爱软萌,带有社交属性,又是一款开黑聚会的手游,备受年轻人关注。 飞瓜数据(B站版)显示,元梦之星在…

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错,安装完成引入from pdf2docx import Converter运行也可能报错,可以根据报错提示看缺少那些库,先卸载pip uninstall xxx,使用pip install python-docx -i htt…

Smartbi携手某证券公司成功打造数据文化体系

以数据为抓手搭建数据体系,需要从业务运营的角度出发,借助工具方法,结构化、系统性地解决业务运营场景中的各种问题,不断优化和提升业务运营效率。数据体系、运营体系、工具方法和组织文化四位一体,自成体系&#xff0…

RabbitMQ的LazyQueue

在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。但在某些特殊情况下,这会导致消息积压,比如: 消费者宕机或出现网络故障消息发送量激增,超过了消费者处理速度消费者处理业务发生阻塞 一旦…

python实现TCPclient

python实现TCPclient是一件简单的事情,只要通过socket这个模块就可以实现。 一、实现步骤 1、导入模块: 首先,你需要导入Python的socket模块。 import socket2、创建Socket对象: 使用socket.socket()函数创建一个新的socket对…

35 机器学习(三):混淆矩阵|朴素贝叶斯|决策树|随机森林

文章目录 分类模型的评估混淆矩阵精确率和召回率 接口介绍其他的补充 朴素贝叶斯基础原理介绍拉普拉斯平滑下面给出应用的例子朴素贝叶斯的思辨 决策树基础使用基本原理信息熵信息增益信息增益率Gini指数 剪枝api介绍 随机森林------集成学习初识基本使用api介绍 分类模型的评估…

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议(ICAMAM 2024) 2024 3rd International Conference on Applied Mechanics and Advanced Materials(ICAMAM 2024) 第三届应用力学与先进材料国际学术会议(ICAMAM 2024&#xff09…

如何写代码实现VRP问题中车辆容量限制及时间窗要求(python)

问题研究背景 使用遗传模拟退火算法求解如下10个卸货点的VRPTW问题。为了使研究的问题更加有意义,本人将时间限理解为服务点一天的具体可以允许配送的时间。 如果不要求车辆从配送中心出发的时间是统一的并且为0时刻,那么就默认第一个配送节点是一定能赶…

将用友U8的数据可视化需要哪些工具?

将金蝶U8的数据可视化需要一个奥威BI数据可视化工具,以及一套专为用友U8打造的标准化BI数据分析方案。 奥威BI SaaS平台:一键链接用友U8,立得报表 别的BI软件围绕用友U8的数据做可视化:1、准备配置环境;2、下载安装配…

JMeter做http接口功能测试

1. 普通的以key-value传参的get请求 e.g. 获取用户信息 添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。 2. 以Json串传参的post请求 e.g. 获取用户余额 添加http请求;…

UITesting 界面测试

1. 创建界面测试视图 UITestingBootcampView.swift import SwiftUI/// 界面测试 ViewModel class UITestingBootcampViewModel: ObservableObject{let placeholderText: String "Add name here..."Published var textFiledText: String ""Published var…

『吴秋霖赠书活动 | 第三期』《Python asyncio并发编程》

文章目录 1. 写在前面2. 浅谈asyncio3. Python asyncio并发编程 不再受限于!asyncio异步让你的程序在高并发时翱翔自如! 声明:赠书活动是博主与出版社达成合作,只属于粉丝的专属福利 本期书籍:《Python asyncio并发编程…

数字货币和区块链:跨境电商的未来之革命

随着全球数字化浪潮的不断涌现,跨境电商正经历着前所未有的革命。其中,数字货币和区块链技术被认为是这场革命的关键驱动力。 它们不仅改变了支付方式,还提供了更安全、高效的交易体验,同时也为跨境电商开启了新的商业模式和机会…

38 WEB漏洞-反序列化之PHPJAVA全解(下)

目录 Java中的API实现序列化和反序列化演示案例WebGoat_Javaweb靶场反序列化测试2020-网鼎杯-朱雀组-Web-think java真题复现 文章参考: https://www.cnblogs.com/zhengna/p/15737517.html https://blog.csdn.net/MCTSOG/article/details/123819548 ysoserial生成攻…

可以更改字体颜色的便签备忘录工具选择用哪个

日常添加笔记记录是一个非常好的习惯,通过笔记来记录一些重要的内容一方面可以帮助大家回顾过去的相关记录,另一方面如果记录的笔记是有关学习类的,还有助于大家随时查看记录的笔记。 多数时候记录笔记内容大家通常会选择一些比较方便易操作…

SQL数据库管理工具RazorSQL mac中文版特点与功能

RazorSQL mac是一款功能强大的SQL数据库管理工具,它支持多种数据库,包括MySQL、Oracle、Microsoft SQL Server、SQLite、PostgreSQL等。 RazorSQL mac 软件特点和功能 多种数据库支持:RazorSQL支持多种数据库,用户可以通过一个工…

Windows 事件日志监控

Windows 事件日志是记录 Microsoft 系统上发生的所有活动的文件,在 Windows 环境中,将记录系统上托管的系统、安全性和应用程序的事件,事件日志提供包含有关事件的详细信息,包括日期、时间、事件 ID、源、事件类型和发起它的用户。…

UE4 材质实操记录

TexCoord的R通道是从左到右的递增量,G通道是从上到下的递增量,R通道减去0.5,那么左边就是【-0.5~0】区间,所以左边为全黑,Abs取绝对值,就达到一个两边向中间的一个递减的效果,G通道同理&#xf…

01. 汇编LED驱动实验

01. 汇编LED驱动实验 汇编原理分析为什么要学习Cortex—A汇编STM32IO初始化流程IMX6UL初始化流程 汇编基础处理器内部数据传输指令存储器访问指令 编写驱动编译程序烧写bin文件 汇编原理分析 为什么要学习Cortex—A汇编 需要用汇编初始化一些SOC外设使用汇编初始化DDR&#x…