pytorch实战 -- 神经网络

news2024/11/18 1:26:01

softmax的基本概念

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

交叉熵损失函数

在这里插入图片描述

模型训练和预测

在训练好softmax回归模型后,给定任一样本特征,就可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致,说明这次预测是正确的。

代码

  1. 导入相关库
import torch
from torch import nn
  1. 定义数据集
    自定义输入X为7张高和宽均为2像素的灰度图片
    自定义输出target为 y1=0, y2=1 , y3=2
# 确定随机数种子
torch.manual_seed(7)
# 自定义数据集
X = torch.rand((7, 2, 2))
target = torch.randint(0, 2, (7,))
  1. 定义网络结构
    定义如下所示的网络结构

在这里插入图片描述

# 自定义网络结构
class LinearNet(nn.Module):
    def __init__(self):
        super(LinearNet, self).__init__()
        # 定义一层全连接层
        self.dense = nn.Linear(4, 3)
        # 定义Softmax
        self.softmax = nn.Softmax(dim=1)

    def forward(self, x):
        y = self.dense(x.view((-1, 4)))
        y = self.softmax(y)
        return y

net = LinearNet()
  1. 定义损失函数
    torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction=‘mean’)
    衡量模型输出与真实标签的差异,在分类时相当有用。
    结合了nn.LogSoftmax()和nn.NLLLoss()两个函数,进行交叉熵计算。
    主要参数:
    weight: 各类别的loss设置权值
    ignore_index: 忽略某个类别
    reduction: 计算模式,可为none/sum/mean
    none: 逐个元素计算
    sum: 所有元素求和,返回标量
    mean: 加权平均,返回标量
loss = nn.CrossEntropyLoss()  # 交叉熵损失函数
  1. 定义优化函数
    torch.optim.SGD(params, lr=, momentum=0, dampening=0, weight_decay=0, nesterov=False)
    构建一个优化器对象optimizer,用来保存当前的状态,并能够根据计算得到的梯度来更新参数,使得模型输出更接近真实标签。
    学习率(learning rate)控制更新的步伐。
    主要参数:
    params: 管理的参数组
    lr: 初始化学习率
    momentum: 动量系数
    weight_decay: L2正则化系数
    nesterov: 是否采用NAG
    zero_grad(): 清空所管理参数的梯度,因为Pytorch张量梯度不自动清零。
    step(): 执行一步更新
optimizer = torch.optim.SGD(net.parameters(), lr=0.1)  # 随机梯度下降法
  1. 开始训练模型
for epoch in range(70):
    train_l = 0.0
    y_hat = net(X)
    l = loss(y_hat, target).sum()

    # 梯度清零
    optimizer.zero_grad()
    # 自动求导梯度
    l.backward()
    # 利用优化函数调整所有权重参数
    optimizer.step()

    train_l += l
    print('epoch %d, loss %.4f' % (epoch + 1, train_l))

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

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

相关文章

chatgpt赋能python:Python列表排序详解:从基础排序到高级算法

Python 列表排序详解:从基础排序到高级算法 在 Python 编程中,列表是常用的数据类型。列表的排序是其中重要的操作之一。Python 提供了多种方法来对列表进行排序,从简单的基础排序到高级的算法排序。在这篇文章中,我们将详细介绍…

找到 FSM 的区别序列、UIO 或特征集(W方法)

找到 FSM 的区别序列、UIO 或特征集(W方法) 1 简介 许多系统都是基于状态的:它们有一个更新的内部状态通过操作并影响行为。 在测试这样一个系统时,一个需要考虑状态。 这导致了一系列的语言,用于描述基于状态的规范和模型,这些可…

并发编程-系统学习篇

并发编程的掌握过程并不容易。 我相信为了解决这个问题,你也听别人总结过:并发编程的第 一原则, 那就是不要写并发程序 这个原则在我刚毕业的那几年曾经是行得通的,那个时候多核服务器还是一种奢侈品,系统的并发量也很…

沙盒不再高端,Windows11将自带沙盒让程序检测更方便

Windows 沙盒提供了轻型桌面环境,可以安全地在隔离状态下运行应用程序。 安装在 Windows 沙盒环境下的软件保持“沙盒”状态,并且与主机分开运行。 沙盒是临时的。 当关闭沙盒后,系统将删除所有软件和文件以及状态。 每次使用时,…

AWK常用用法

awk简介 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,…

解决一个典型的商业案例研究任务

介绍 印尼的一家公司 Gojek 通过移动应用程序提供运输和物流、食品和购物、支付、日常需求、商业、新闻和娱乐等服务,对经济做出了超过70亿美元的贡献。 它拥有 90 万注册商户、超过 1.9 亿次应用下载以及超过 200 万名司机能够在120分钟内完成超过18万个订单。我们…

chatgpt赋能python:Python创建界面的重要性及实现方法

Python创建界面的重要性及实现方法 作为一名有10年Python编程经验的工程师,我深知Python在Web开发、数据分析和人工智能等方面的强大表现。然而,Python对于前端的支持一直是一个不被关注的领域。 随着网站、移动应用和电脑软件的普及,用户对…

Find My产品|Targus推出最新支持苹果Find My双肩包

Targus宣布推出 Cypress Hero Backpack 双肩包,最大的亮点在于支持苹果“Find My”,在丢失后可定位追踪。 Targus这款双肩包采用了环保材料,可以妥善地保护笔记本电脑,并提供丰富的收纳袋存放各种配件和物品。这款双肩包内置带衬…

Unity Addressables学习笔记(3)---加载远程场景Scenes

前言 Unity Addressables学习笔记—汇总 正文 1.创建一个新场景 我是创建在Resources/Scenes目录下,如图: 2.为场景创建一个Addressables的Group Game1Group就是我新创建的一个Group用来存放场景1的所有资源,分组的配置跟Remote一样&a…

vue 读取本地文件

1. vue读取本地文件 2.在文件夹下添加一个类 3.读取本地文件,先读取文件的内容 4.在 body下添加一个属性 5.读取后,写到 setTimeout方法中,返回一个错误信息。 6. restart方法,在组件渲染时调用 7. return setTimeout &#xff08…

使用Redis的zset集合实现小程序的滚动分页

一、 Redis中,使用有序集合(sorted set)实现滚动分页的原理如下: 将每个文档的 score 值设置为时间戳(或根据其他规则计算的分数),将文档的 ID 作为 value,然后将其添加到有序集合中…

delphi 开发虚拟摄像头

用directshow创建一个虚拟摄像头 然后注册到系统, 在用一个main app 调用摄像头,往里面写流, 可以是屏幕录制,可以是播放的多媒体文件 然后具体是要实现录屏,或者播放多媒体文件,在虚拟摄像头插件中fil…

Godot 4 源码分析 - 初探

准备研究GoDot 4源码。 源码下载 获取源代码 在进入 SCons 构建系统并编译 Godot 之前,你需要将 Godot 的源代码下载到本地。 源代码位于 GitHub 上, 虽然你可以通过网站手动下载它, 但是通常你希望通过 git 版本控制系统来下载. 如果你是为了做贡献或拉动请求…

国产新秀---XS5018A,芯昇,图像信号处理芯片

国产视频处理芯片,大崛起。 XS5018A 是一款针对 CMOS 图像传感器的高性价比图像信号处理芯片,支持 1M/2M 像素 图像传感器,一组 10-bit DVP 输入接口, ISP 具备优异的 3D 降噪功能,标清模拟输出支持 960…

Java官方笔记6继承

继承 Java只有单继承,最顶级的父类是Object。 子类会继承父类的fields和methods,而不会继承constructors,因为constructors不属于methods,但是子类可以通过super调用父类的constructor。 子类继承父类的范围是:public、…

记录--让URL地址都变成了ooooooooo

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 发现一个很有创意的小工具网站,如封面图所示功能很简单,就是将一个URL地址转换为都是 ooooooooo 的样子,通过转换后的地址访问可以转换回到原始地址,简单…

chatgpt赋能python:Python创建Word文档指南

Python创建Word文档指南 在今天的数字时代,Word文档仍然是最常见和使用的文档类型之一。Python是一个强大的编程语言,可以用于自动化创建各种类型的文档,包括Word文档。在本篇文章中,我们将介绍如何使用Python创建Word文档&#…

Rust每日一练(Leetday0019) 跳跃游戏、合并区间、插入区间

目录 55. 跳跃游戏 Jump Game 🌟🌟 56. 合并区间 Mmerge Intervals 🌟🌟 57. 插入区间 Insert Interval 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专…

KP3114电源IC介绍--【其利天下】

KP3114 是一款高性能低成本 PWM 控制功率开关,适用于离线式小功率降压型应用场合,外围电路简单、器件个数少。同时产品内置高耐压 MOSFET 可提高系统浪涌耐受能力。 与传统的 PWM 控制器不同,KP3114 内部无固定时钟驱动 MOSFET,系…

为什么陶瓷板视觉技术会越来越受到人们的青睐?

随着科技的不断进步和应用,陶瓷板视觉技术越来越受到人们的青睐。陶瓷板视觉技术是一种新型的非接触式检测技术,它可以在生产过程中对产品进行高效、准确的检测和质量控制。下面我们来详细了解一下陶瓷板视觉技术的优势和应用。 一、优势 1.高效性 陶…