【PyTorch】张量操作与线性回归
张量的操作
Tensor Operation
拼接与切分
1.1 torch.cat()
torch.cat(tensors, dim=0, out=None)
功能:将张量按维度dim进行拼接
- tensors:张量序列
- dim:要拼接的维度
1.2 torch.stacok()
torch.stack(tensors, dim=0, out=None)
功能:在新创建的维度dim上进行拼接
- tensors:张量序列
- 要拼接的维度
1.3 torch.chunk()
torch.chunk(input, chunks, dim=0)
功能:将张量按维度dim进行平均切分
返回值:张量列表
注意事项:若不能整除,最后一份张量小于其他张量
- input:要切分的张量
- chunks:要切分的份数
- dim:要切分的维度
1.4 torch.split()
torch.chunk(input, chunks, dim=0)
功能:将张量按维度dim进行切分
返回值:张量列表
- tensor:要切分的张量
- split_size_or_sections:为int时,表示每一份的长度;为list时,按list元素切分
- dim:要切分的维度
索引
2.1 torch.index_select()
torch.index_select(input, dim, index, out=None)
功能:在维度dim上,按index索引数据返回值(依index索引数据拼接的张量)
- input:要索引的张量
- dim:要索引的维度
- index:要索引数据的序号
2.2 torch.masked_select()
torch.masked_select(input, mask, out=None)
功能:按mask中的True进行索引
返回值:一维张量
- input:要索引的张量
- mask:与input同形状的布尔类型张量
变换
3.1 torch.reshape()
torch.reshape(input, shape)
功能:变换张量形状
注意事项:当张量在内存中是连续时,新张量与input共享数据内存(改变一个变量时,另一个变量也会被改变)。
- input:要变换的张量
- shape:新张量的形状
3.2 torch.transpose()
torch.transpose(input, dim0, dim1)
功能:交换张量的两个维度
- input:要变换的张量
- dim0:要交换的维度
- dim1:要交换的维度
3.3 torch.t()
功能:2维张量转置,对矩阵而言,等价于
torch.transpose(input, 0, 1)
3.4 torch.squeeze()
torch.squeeze(input, dim=None, out=None)
功能:压缩长度为1的维度(轴)
- dim:若为None,移除所有长度为1 的轴;若指定维度,当且仅当该轴长度为1时,可以被移除
3.5 torch.unsqueeze()
torch.unsqueeze(input, dim)
功能:依据dim扩展维度
- dim:扩展的维度
张量的数学运算
Tensor Math Operations
加减乘除
torch.add()
torch.addcidv()
torch.addcmul()
torch.sub()
torch.div()
torch.mul()
对数、指数、幂函数
torch.log(input, out=None)
torch.log10(input, out=None)
torch.log2(input, out=None)
torch.exp(input, out=None)
torch.pow()
三角函数
torch.abs(input, out=None)
torch.acos(input, out=None)
torch.cosh(input, out=None)
torch.cos(input, out=None)
torch.asin(input, out=None)
torch.atan(input, out=None)
torch.atan2(input, other, out=None)
实例
torch.add()
torch.add(input, other, out=None)
torch.add(input, other, *, alpha=1, out=None)
功能:逐元素计算 input + alpha × other
- input:第一个张量
- alpha:乘项因子
- other:第二个张量
Pythonic:
torch.addcdiv()
torch.addcdiv(input, tensor1, tensor2, *, value=1, out=None)

torch.addcmul()
torch.addcmul(input, tensor1, tensor2, *, value=1, out=None)

线性回归
Linear Regression
基本概念
线性回归是分析一个变量与另外一(多)个变量之间关系的方法。
因变量:y
自变量:x
关系:线性
y = wx + b
分析:求解w,b
求解步骤
- 确定模型
Model:y = wx + b - 选择损失函数
MSE

- 求解梯度并更新w,b
w = w - LR * w.grad
b = b - LR * w.grad
完整代码
import torch
import matplotlib.pyplot as plt
torch.manual_seed(10)lr = 0.05 # 学习率# 创建训练数据
x = torch.rand(20, 1) * 10 # x data (tensor), shape=(20, 1)
# torch.randn(20, 1) 用于添加噪声
y = 2*x + (5 + torch.randn(20, 1)) # y data (tensor), shape=(20, 1)# 构建线性回归参数
w = torch.randn((1), requires_grad=True) # 设置梯度求解为 true
b = torch.zeros((1), requires_grad=True) # 设置梯度求解为 true# 迭代训练 1000 次
for iteration in range(1000):# 前向传播,计算预测值wx = torch.mul(w, x)y_pred = torch.add(wx, b)# 计算 MSE lossloss = (0.5 * (y - y_pred) ** 2).mean()# 反向传播loss.backward()# 更新参数b.data.sub_(lr * b.grad)w.data.sub_(lr * w.grad)# 每次更新参数之后,都要清零张量的梯度w.grad.zero_()b.grad.zero_()# 绘图,每隔 20 次重新绘制直线if iteration % 20 == 0:plt.scatter(x.data.numpy(), y.data.numpy())plt.plot(x.data.numpy(), y_pred.data.numpy(), 'r-', lw=5)plt.text(2, 20, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 20, 'color': 'red'})plt.xlim(1.5, 10)plt.ylim(8, 28)plt.title("Iteration: {}\nw: {} b: {}".format(iteration, w.data.numpy(), b.data.numpy()))plt.pause(0.5)# 如果 MSE 小于 1,则停止训练if loss.data.numpy() < 1:break
参考链接
PyTorch 学习笔记
相关文章:
【PyTorch】张量操作与线性回归
张量的操作 Tensor Operation 拼接与切分 1.1 torch.cat() torch.cat(tensors, dim0, outNone)功能:将张量按维度dim进行拼接 tensors:张量序列dim:要拼接的维度 1.2 torch.stacok() torch.stack(tensors, dim0, outNone)功能…...
情感类智能体——你的微信女神
智能体名称:你的微信女神 链接:文心智能体平台AgentBuilder | 想象即现实 (baidu.com)https://agents.baidu.com/agent/preview/RulbsUjIGj4wsinydlBH7AR3NQKFungt 简介 “你的微信女神”是一个直率的智能体,她用犀利而真实的言辞帮助用户…...
基于SpringBoot+Vue+MySQL的养老院管理系统
系统展示 管理员界面 家属界面 系统背景 随着全球人口老龄化的加速,养老院管理面临着前所未有的挑战。传统管理方式存在信息不透明、效率低下、资源分配不均等问题,难以满足日益增长的养老服务需求。因此,开发一套智能化、高效的养老院管理系…...
大数据Flink(一百二十二):阿里云Flink MySQL连接器介绍
文章目录 阿里云Flink MySQL连接器介绍 一、特色功能 二、语法结构 三、WITH参数 阿里云Flink MySQL连接器介绍 阿里云提供了MySQL连接器,其作为源表时,扮演的就是flink cdc的角色。 一、特色功能 MySQ…...
FutureTask源码分析
Thread类的run方法返回值类型是void,因此我们无法直接通过Thread类获取线程执行结果。如果要获取线程执行结果就需要使用FutureTask。用法如下: class CallableImpl implements Callable{Overridepublic Object call() throws Exception {//do somethin…...
Highcharts甘特图基本用法(highcharts-gantt.js)
参考官方文档: https://www.highcharts.com/docs/gantt/getting-started-gantt https://www.highcharts.com/demo/gantt/project-management https://www.hcharts.cn/demo/gantt 链接在下面按需引入 https://code.highcharts.com/gantt/highcharts-gantt.js htt…...
【Linux庖丁解牛】—Linux基本指令(上)!
🌈个人主页:秋风起,再归来~🔥系列专栏: Linux庖丁解牛 🔖克心守己,律己则安 目录 1、 pwd命令 2、ls 指令 3、cd 指令 4、Linux下的根目录 5、touch指令 6、 stat指令 7、mkdi…...
node.js 中的进程和线程工作原理
本文所有的代码均基于 node.js 14 LTS 版本分析 概念 进程是对正在运行中的程序的一个抽象,是系统进行资源分配和调度的基本单位,操作系统的其他所有内容都是围绕着进程展开的 线程是操作系统能够进行运算调度的最小单位,其是进程中的一个执…...
Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)
发布版本链接 通过百度网盘分享的文件:TCP调试助手V1.zip(含客户端与服务器) 链接:https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码:cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…...
DNS解析流程
DNS解析流程: 浏览器DNS缓存: 当我们在浏览器中访问某个域名时,浏览器首先会检查自己内部的DNS缓存,看是否有该域名的对应IP地址。如果有,直接使用缓存中的IP地址,跳过后续步骤。 本地系统DNS缓存…...
[PTA]7-1 藏头诗
[PTA]7-1 藏头诗 本题要求编写一个解密藏头诗的程序。 注:在 2022 年 7 月 14 日 16 点 50 分以后,该题数据修改为 UTF-8 编码。 输入格式: 输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占三…...
每日OJ题_牛客_WY22 Fibonacci数列(斐波那契)
目录 牛客_WY22 Fibonacci数列(斐波那契) 解析代码 牛客_WY22 Fibonacci数列(斐波那契) Fibonacci数列_牛客题霸_牛客网 解析代码 求斐波那契数列的过程中,判断⼀下:何时 n 会在两个 fib 数之间。 #in…...
SQL 查询语句汇总
在软件开发和数据分析中,SQL(结构化查询语言)是与数据库交互的重要工具。为了更好地理解 SQL 查询语句的使用,本文将设计一个简单的数据库,包括几张表,并通过这些表展示各种 SQL 查询的应用。 一、背景信息…...
封装一个语言识别文字的方法
语音识别 需求: 参考官方文档,整合语音识别apicallback 的写法改为 Promise 的版本 在startRecord中: 参考文档实例化-开启转换将录制的内容传递给录音识别回调函数中的 Log,改为 Logger 在closeRecord: 结束识别…...
解决 iOS App Tracking Transparency 权限问题
解决 iOS App Tracking Transparency 权限问题 在 iOS 14 及更高版本中,Apple 引入了 App Tracking Transparency (ATT) 框架,要求应用在跟踪用户之前必须获得用户的明确许可。这通常涉及到访问用户的广告标识符(IDFA)。如果没有…...
ClickHouse 的底层架构和原理
ClickHouse 是一个用于实时分析和处理大规模数据的列式数据库,其设计目标是高效地处理海量数据的查询需求。它特别适合 OLAP(Online Analytical Processing)场景,能够在不依赖复杂的索引结构的情况下,实现极快的查询速…...
rtmp推流
获取摄像头名称 打开命令行工具,运行以下命令以列出所有可用的视频设备: ffmpeg -f dshow -list_devices true -i dummy查找输出中的“Video devices”部分,记录下你的摄像头名称。 构建推流命令 ffmpeg -f dshow -i video"摄像头名称…...
【数据库】死锁排查方式
定位 查是否锁表 select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); 查锁表sql select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select s…...
去耦合的一些建议
尽量少用全局变量,以减少状态共享和潜在的副作用。 模块化设计:将代码分成小模块,每个模块独立实现特定功能,减少模块之间的相互依赖。 封装:将数据和操作封装在类中,控制对内部状态的访问,避…...
SpringBoot+Thymeleaf图书管理系统
一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观,代码结构清晰,完成度比较高,适用于JAVA初学者作为参考项目。 二、项目演示 三…...
为什么要学习大模型?从新手到专家:AI大模型学习与实践完全指南
一、初聊大模型 1、什么是大模型? 大模型,通常指的是在人工智能领域中的大型预训练模型。你可以把它们想象成非常聪明的大脑,这些大脑通过阅读大量的文本、图片、声音等信息,学习到了世界的知识。这些大脑(模型&…...
飞书推送文件给指定用户
首先要先把文件上传到飞书服务器,获取文件key。然后调用消息发送API进行文件推送// 上传文件String fileKey uploadFileToFeishu();// 将文件推送给用户列表sendFileToFeishuUserId(fileKey,userList);/*** 上传文件到飞书云端* return* throws Exception*/privat…...
MogFace-large效果对比:在遮挡/小脸/密集场景下超越YOLOv8与RetinaFace实测
MogFace-large效果对比:在遮挡/小脸/密集场景下超越YOLOv8与RetinaFace实测 1. 引言:人脸检测的现实挑战 在实际应用中,人脸检测面临着三大难题:遮挡、小脸和密集场景。当人脸被口罩、眼镜或其他人遮挡时,传统检测器…...
三步掌握Citra模拟器:从入门到精通的高效实用指南
三步掌握Citra模拟器:从入门到精通的高效实用指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra Citra是一款开源的Nintendo 3DS模拟器,它能让你在Windows、Linux和macOS系统上流畅运行《…...
为什么很多实时图表方案会失败?
在监控系统、IoT设备平台、金融行情等场景中,“实时数据可视化”已经成为前端的核心能力之一。很多开发者在 React 项目中尝试实现实时图表时,往往会遇到卡顿、延迟甚至内存增长的问题。在 React 中实现实时图表,推荐使用 Highcharts…...
Hunyuan翻译模型部署慢?一键镜像提速90%实战验证
Hunyuan翻译模型部署慢?一键镜像提速90%实战验证 还在为Hunyuan翻译模型部署耗时过长而烦恼吗?本文将为你展示如何通过CSDN星图镜像实现90%的部署速度提升,让你快速体验高性能翻译服务。 1. 从零开始:传统部署的痛点与挑战 部署A…...
Laravel Stats Tracker迁移升级指南:从旧版本平滑过渡到新版本的完整方案
Laravel Stats Tracker迁移升级指南:从旧版本平滑过渡到新版本的完整方案 【免费下载链接】tracker Laravel Stats Tracker 项目地址: https://gitcode.com/gh_mirrors/tr/tracker Laravel Stats Tracker是一款功能强大的Laravel统计跟踪工具,能够…...
美胸-年美-造相Z-Turbo部署避坑指南:Xinference日志解读与常见启动失败排查
美胸-年美-造相Z-Turbo部署避坑指南:Xinference日志解读与常见启动失败排查 1. 项目简介与部署价值 美胸-年美-造相Z-Turbo是基于Z-Image-Turbo LoRA版本的专业文生图模型,专注于高质量的美胸年美风格图像生成。通过Xinference框架部署,结合…...
LeetCode //C - 1002. Find Common Characters
1002. Find Common Characters Given a string array words, return an array of all characters that show up in all strings within the words (including duplicates). You may return the answer in any order. Example 1: Input: words [“bella”,“label”,“roll…...
如何用Notepad--打造跨平台开发环境:国产编辑器的逆袭之路
如何用Notepad--打造跨平台开发环境:国产编辑器的逆袭之路 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...
