3.线性神经网络

文章目录

    • 3.1.线性回归
    • 3.2.线性回归的从零开始实现
    • 3.3.线性回归的简洁实现
    • 3.4.softmax回归
    • 3.5.图像分类数据集
    • 3.6.softmax回归的从零开始实现
    • 3.7.softmax回归的简洁实现

3.1.线性回归

3.2.线性回归的从零开始实现

  1. 生成数据集迭代器:Python中,yield关键字用于定义一个生成器(generator)函数。生成器函数是一种特殊的函数,它允许你逐个生成值,而不是一次性返回一个完整的列表或集合。这样做的好处是可以节省内存,特别是在处理大量数据时,因为你可以按需生成数据,而不是一次性将所有数据加载到内存中。

    import randomdef data_iter(batch_size, features, labels):num_examples = len(features)indices = list(range(num_examples))# 这些样本是随机读取的,没有特定的顺序random.shuffle(indices)for i in range(0, num_examples, batch_size):batch_indices = torch.tensor(indices[i: min(i + batch_size, num_examples)])yield features[batch_indices], labels[batch_indices]batch_size = 10for X, y in data_iter(batch_size, features, labels):print(X, '\n', y)break
    

    由于yield的使用,data_iter函数不会一次性执行完毕并返回一个结果,而是每次调用时返回一个批次的数据,并在下次调用时从上次停止的地方继续执行。这使得函数能够按需生成数据批次,非常适合于迭代训练过程。

    使用生成器的好处之一是它们允许你以一种懒加载(lazy loading)的方式处理数据,即只在需要时才生成数据。这对于处理大型数据集或流数据特别有用,因为它可以显著减少内存的使用。

  2. 定义SDG优化算法

def sgd(params, lr, batch_size):  #@save"""小批量随机梯度下降"""with torch.no_grad():for param in params:param -= lr * param.grad / batch_sizeparam.grad.zero_()

3.3.线性回归的简洁实现

  1. 读取纯数据形式的数据集
    import numpy as np
    import torch
    from torch.utils import datadef load_array(data_arrays, batch_size, is_train=True):  #@save"""构造一个PyTorch数据迭代器"""dataset = data.TensorDataset(*data_arrays)return data.DataLoader(dataset, batch_size, shuffle=is_train)batch_size = 10
    data_iter = load_array((features, labels), batch_size)# 使用iter构造Python迭代器,并使用next从迭代器中获取第一项
    next(iter(data_iter))
    

3.4.softmax回归

3.5.图像分类数据集

3.6.softmax回归的从零开始实现

  1. 实现 softmax 函数:
    def softmax(X):X_exp = torch.exp(X)partition = X_exp.sum(1, keepdim=True)return X_exp / partition  # 这里应用了广播机制
    
  2. 实现交叉熵损失函数:y_hat: (B, C) = (batch_size, class_num), y: (C,) 表示每个样本的真值类别
    def cross_entropy(y_hat, y):return - torch.log(y_hat[range(len(y_hat)), y])cross_entropy(y_hat, y)
    
  3. 计算预测时的分类精度
    def accuracy(y_hat, y):  #@save"""计算预测正确的数量"""if len(y_hat.shape) > 1 and y_hat.shape[1] > 1:y_hat = y_hat.argmax(axis=1)cmp = y_hat.type(y.dtype) == yreturn float(cmp.type(y.dtype).sum())def evaluate_accuracy(net, data_iter):  #@save"""计算在指定数据集上模型的精度"""if isinstance(net, torch.nn.Module):net.eval()  # 将模型设置为评估模式metric = Accumulator(2)  # 正确预测数、预测总数with torch.no_grad():for X, y in data_iter:metric.add(accuracy(net(X), y), y.numel())return metric[0] / metric[1]
    

3.7.softmax回归的简洁实现

  1. CrossEntropyLoss:传入 reduction 模式的不同,输出结果也不同(可能是张量,也可能是对张量求和之后的标量)
    loss = nn.CrossEntropyLoss(reduction='none')
    

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

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

相关文章

奶龙IP联名异军突起:如何携手品牌营销共创双赢?

在快节奏的互联网消费时代,年轻消费群体对产品和品牌的要求越来越挑剔。因此在品牌年轻化的当下,一方面需要品牌自身形象也要不断追求时代感,另一方面品牌也需要不断引领消费者需求,提升竞争力和产品力。 奶龙作为近年来异军突起…

项目中排查bug的思路案例

bug描述:调用了删除的接口,执行成功了,也删掉了选中的数据,但是不执行删除后的处理操作,会报一个“系统未知错误,请反馈给管理员” 解决: 成功删掉了数据,但删除后的操作没有执行&a…

欧瑞博智能家居掀起风潮 助力新加坡智慧国2.0发展

(狮城快讯)在新加坡智慧国2.0计划的推动下,智能科技日益融入生活,智慧社区建设成为提升生活品质的关键。智能家居品牌ORVIBO凭借创新的AI技术和优质用户体验,迅速成为本地智能家居的领导者,从别墅、公寓到H…

【AI人脸整合包及教程】FaceFusion 3.0.0:AI人脸技术的新高度

一、引言 在当今数字化时代,AI技术不断发展并渗透到各个领域,其中AI人脸技术尤为引人注目。FaceFusion 3.0.0作为这一领域的代表性工具,正引领着新的潮流。 二、FaceFusion 3.0.0的功能特点 高度精确的人脸效果 FaceFusion 3.0.0利用先进的…

OLED透明屏在零售行业有哪些优势

OLED透明屏在零售行业具有诸多优势,这些优势使得它成为零售行业中一种创新且高效的展示工具。以下是对OLED透明屏在零售行业优势的详细分析: 1. 视觉吸引力与沉浸感 高透明度:OLED透明屏能够实现40%以上的透明度,使得屏幕后的物体…

win10 pip 永久镜像

打开文件夹,找到目录 :C:\Users\xxx\AppData\Roaming // xxx是你的用户名 如果看不到AppData文件夹,可以点击上方的查看 ,勾选上隐藏的项目即可 然后再Roaming 目录下创建文件夹 pip 在pip文件夹下面创建 pip.ini 文件&#xf…

计算机毕业设计 | SpringBoot+vue城镇保障性住房管理 公租房系统(附源码+论文)

1,绪论 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理城镇保障性住房管理系统的相关信…

软件测试学习笔记丨Selenium学习笔记:元素定位与操作

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22510 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…

任我行协同CRM普及版 CommonDict/Edit SQL注入漏洞复现

0x01 产品简介 任我行协同CRM普及版是由成都市任我行信息技术有限公司开发的一款客户关系管理软件。该软件旨在帮助中小企业简化管理流程,提升客户管理能力,以及优化销售业绩。集成了CRM、OA、HR等多项功能于一体,为企业提供了一个全面的管理平台。该软件通过高度集成的解决…

JVM调优理论

JVM调优 文章目录 JVM调优理论JVM内存结构堆栈方法区(逻辑上的划分,不同版本略有区别) 类加载过程编译与反编译类加载过程 编译器优化机制字节码如何运行Hotspot的即时编译器分层编译找热点方法Hospot 内置的两类计数器 方法内联逃逸分析 垃圾…

(C语言)数据在内存中的储存

目录 1>.存储的方式 2>.关于用%d来打印char类型数 3>.不同类型能表示的范围 4>.浮点数在内存中的存储 储存方式 E在内存中的存储 E在内存中的取出 1)E不全是0和1 2)E全为0 3)E全为1 整数和浮点数在内存中是以二进制的方…

Tryhackme练习-Wonderland

基本信息 由于tryhackme是在线靶场,所以这里的IP均为对方的内网IP 攻击机器:10.10.242.186 靶机:10.10.173.3 目标:获取2个flagroot权限 具体流程 信息收集 首先我们使用fscan进行端口扫描,fscan -h 10.10.173.…

【设计模式-原型】

**原型模式(Prototype Pattern)**是一种创建型设计模式,旨在通过复制现有对象的方式来创建新对象,而不是通过实例化类来创建对象。该模式允许对象通过克隆(复制)来创建新的实例,因此避免了重新创…

配置maven本地仓库的路径及镜像仓库

一、本地仓库路径 找到标签:localRepository,将标签中间的内容换成你要配置的库文件夹路径即可: 二、镜像仓库 找到标签:mirrors,配置如下: 可以将url标签中的路径换成你想配置的路径即可

在一个.NET Core项目中使用RabbitMQ进行即时消息管理

为了在一个.NET Core项目中使用RabbitMQ进行即时消息管理,以下是详细的全程操作指南,包括安装、配置、编写代码和调试使用。 一、安装RabbitMQ 1. 安装Erlang RabbitMQ依赖Erlang,因此需要先安装Erlang。 Windows: 下载并运行Erlang安装…

51c大模型~合集60

我自己的原文哦~ https://blog.51cto.com/whaosoft/12102352 #百舸 当大模型Scaling Law继续,万卡集群算力释放在「百舸」这里找到一条通途 在电影《天下无贼》中,葛优扮演的黎叔有这样一句经典的台词,「二十一世纪什么最贵?人…

Auto-Py-to-Exe:一键生成可执行的EXE文件,助力 Python 项目在Windows上快速部署

Python以其简洁易懂的语法和丰富的库而闻名,但对于想要将Python项目分享给他人或进行独立部署的开发者来说,将代码打包成可执行文件往往是必不可少的一步。而Auto-Py-to-Exe就是一个功能强大的工具,它能帮助你轻松将Python脚本转换成独立的可…

如何巧妙使用AI工具

一、AI的介绍 AI:即人工智能,是计算机科学体系下的一个学科,是指通过计算机系统模拟人类智力的一种技术。 AIGC:AI领域的一个应用分支,专注于利用AI技术自动生成内容,包括文本,代码&#xff0…

C/C++ 优化,strlen 示例

目录 C/C optimization, the strlen examplehttps://hallowed-blinker-3ca.notion.site/C-C-optimization-the-strlen-example-108719425da080338d94c79add2bb372 揭开优化的神秘面纱... 让我们来谈谈 CPU 等等,SIMD 是什么? 为什么 strlen 是一个很…

性能测试

浅谈性能瓶颈之Mysql慢查询 1.开启测试环境的mysql数据库慢查询日志,然后在日志文件里自动记录这些慢查询,以及not using index的查询。数据库执行下面几个命令: set global slow_query_logon /*开启慢查询日志*/set log_queries_not_using_…