【PyTorch Tensor】PyTorch Tensor编程教学:基础与实战

news/2024/4/28 7:13:14/文章来源:https://blog.csdn.net/u013421629/article/details/137103092

PyTorch是一个开源的机器学习库,它提供了强大的张量计算(Tensor computation)能力和动态计算图(Dynamic computation graph),使得深度学习模型的构建和训练变得更加灵活和直观。在本文中,我们将通过一些基础的例子来学习PyTorch中的Tensor编程。
官网网站中文学习网站:中文pytorch 教程学习网站

1. PyTorch中的Tensor

Tensor是PyTorch中的基本数据结构,它可以看作是一个高维数组或矩阵。与NumPy的ndarray类似,Tensor也支持多种数值运算。但是,与ndarray不同的是,Tensor可以在GPU上运行,这使得计算速度大大提升。

1.1 创建Tensor

首先,让我们来学习如何创建一个Tensor。PyTorch提供了多种方式来创建Tensor,例如,从Python列表或NumPy数组创建。

import torch
# 从Python列表创建Tensor
tensor_from_list = torch.tensor([1, 2, 3, 4])
# 从NumPy数组创建Tensor
import numpy as np
numpy_array = np.array([1, 2, 3, 4])
tensor_from_numpy = torch.from_numpy(numpy_array)
# 创建一个全零的Tensor
zero_tensor = torch.zeros(4)
# 创建一个全一的Tensor
one_tensor = torch.ones(4)
# 创建一个形状为(2, 3)的未初始化的Tensor
uninitialized_tensor = torch.empty(2, 3)
# 创建一个形状为(2, 3)且值在[0, 1)区间均匀分布的Tensor
uniform_tensor = torch.rand(2, 3)
# 创建一个形状为(2, 3)且值服从标准正态分布的Tensor
normal_tensor = torch.randn(2, 3)
# 默认数据类型 32位浮点数
a=torch.Tensor([[1,2,3],[4,5,6],[7,8,9]])
print(a)
print(a.type())# 指定数据类型64位浮点数
b=torch.DoubleTensor([[1,2,3],[4,5,6],[7,8,9]])
print(b)
print(b.type())# 指定数据类型16位整型
c=torch.ShortTensor([[1,2,3],[4,5,6],[7,8,9]])
print(c)
print(c.type())# 指定数据类型32位整型
d=torch.IntTensor([[1,2,3],[4,5,6],[7,8,9]])
print(d)
print(d.type())# 指定数据类型64位整型
e=torch.LongTensor([[1,2,3],[4,5,6],[7,8,9]])
print(e)
print(e.type())

运行结果:

tensor([[1., 2., 3.],[4., 5., 6.],[7., 8., 9.]])
torch.FloatTensor
tensor([[1., 2., 3.],[4., 5., 6.],[7., 8., 9.]], dtype=torch.float64)
torch.DoubleTensor
tensor([[1, 2, 3],[4, 5, 6],[7, 8, 9]], dtype=torch.int16)
torch.ShortTensor
tensor([[1, 2, 3],[4, 5, 6],[7, 8, 9]], dtype=torch.int32)
torch.IntTensor
tensor([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
torch.LongTensor

1.2 Tensor的基本属性

每个Tensor都有一些基本的属性,如形状(shape)、数据类型(dtype)和设备(device)。

# 查看Tensor的形状
print(tensor_from_list.shape)
# 查看Tensor的数据类型
print(tensor_from_list.dtype)
# 查看Tensor所在的设备
print(tensor_from_list.device)

1.3 Tensor的运算

PyTorch支持丰富的Tensor运算,包括算术运算、矩阵运算、索引和切片等。

# 算术运算
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
add_result = a + b
sub_result = a - b
mul_result = a * b
div_result = a / b
# 矩阵运算
mat1 = torch.tensor([[1, 2], [3, 4]])
mat2 = torch.tensor([[5, 6], [7, 8]])
matmul_result = torch.matmul(mat1, mat2)
# 索引和切片
tensor = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
first_row = tensor[0]
first_column = tensor[:, 0]
last_element = tensor[-1, -1]
矩阵乘法运行结果
tensor([[19, 22],[43, 50]])

二维矩阵乘法是一种基本的线性代数运算,用于计算两个矩阵相乘的结果。矩阵乘法遵循特定的规则,其中矩阵A和矩阵B的乘积矩阵C可以通过以下方式计算:
C i j = ∑ k = 1 m A i k × B k j C_{ij} = \sum_{k=1}^{m} A_{ik} \times B_{kj} Cij=k=1mAik×Bkj
其中, C C C是结果矩阵, A A A B B B是乘积矩阵的输入矩阵, i i i j j j是矩阵C的行和列索引, k k k是矩阵A和矩阵B的列索引。
下面是一个简单的例子来说明二维矩阵乘法的计算过程:
假设我们有两个矩阵:
A = [ 1 2 3 4 ] A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} A=[1324]

B = [ 5 6 7 8 ] B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \\ \end{bmatrix} B=[5768]
我们想要计算矩阵A和矩阵B的乘积矩阵C。
首先,我们按照上述公式计算每个元素 C i j C_{ij} Cij
C 11 = A 11 × B 11 + A 12 × B 21 = 1 × 5 + 2 × 7 = 5 + 14 = 19 C_{11} = A_{11} \times B_{11} + A_{12} \times B_{21} = 1 \times 5 + 2 \times 7 = 5 + 14 = 19 C11=A11×B11+A12×B21=1×5+2×7=5+14=19
C 12 = A 11 × B 12 + A 12 × B 22 = 1 × 6 + 2 × 8 = 6 + 16 = 22 C_{12} = A_{11} \times B_{12} + A_{12} \times B_{22} = 1 \times 6 + 2 \times 8 = 6 + 16 = 22 C12=A11×B12+A12×B22=1×6+2×8=6+16=22
C 21 = A 21 × B 11 + A 22 × B 21 = 3 × 5 + 4 × 7 = 15 + 28 = 43 C_{21} = A_{21} \times B_{11} + A_{22} \times B_{21} = 3 \times 5 + 4 \times 7 = 15 + 28 = 43 C21=A21×B11+A22×B21=3×5+4×7=15+28=43
C 22 = A 21 × B 12 + A 22 × B 22 = 3 × 6 + 4 × 8 = 18 + 32 = 50 C_{22} = A_{21} \times B_{12} + A_{22} \times B_{22} = 3 \times 6 + 4 \times 8 = 18 + 32 = 50 C22=A21×B12+A22×B22=3×6+4×8=18+32=50
因此,矩阵A和矩阵B的乘积矩阵C为:
C = [ 19 22 43 50 ] C = \begin{bmatrix} 19 & 22 \\ 43 & 50 \\ \end{bmatrix} C=[19432250]
在这个例子中,我们首先将矩阵A的第一行与矩阵B的第一列相乘,然后将结果与矩阵B的第二列相乘,最后将这两个结果相加得到矩阵C的第一行第一列的值。我们重复这个过程,计算出矩阵C的所有元素。

# 拼接两个tensor
mat3 = torch.cat([mat1,mat2], 0)
print(mat3)
print(mat3.dtype)

2. 实战:使用Tensor构建线性模型

现在,让我们使用Tensor来构建一个简单的线性模型:y = wx + b。我们将创建一些随机的数据作为输入和权重,然后计算模型的输出。

# 创建随机的输入数据
x = torch.randn(10)
# 创建随机的权重和偏置
w = torch.randn(1)
b = torch.randn(1)
# 计算模型的输出
y = w * x + b

在本文中,我们介绍了PyTorch中Tensor的基本概念和操作。通过这些基础知识和实战例子,您应该能够开始使用PyTorch进行更复杂的深度学习模型构建和训练。记住,实践是最好的学习方式,所以不要害怕犯错,大胆尝试吧!

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

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

相关文章

(4)(4.3) Kogger Sonar

文章目录 前言 1 推荐硬件 2 配置回声探测仪模块 3 连接ArduPilot硬件 4 参数说明 前言 KOGGER 声纳(KOGGER Sonar)是一款结构紧凑、成本低廉的水下回声测深仪模块,带有 UART 接口,电源电压为 5-14v。 1 推荐硬件 CP210x USB->UART 转换器和安装…

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域,每个类别大都会达到300个样本。但是在实际公开数据集中,以CWRU数据集为例,每个类别只有24组数据,这明显是不…

HelpLook AI ChatBot:自定义Prompts综合指南

AI问答机器人(AI Chatbot)日益在各行业普及,但回答准确率的不足仍是其面临的痛点。用户在与AI问答机器人的互动中常发现,机器人难以完全理解和准确回答复杂问题。HelpLook可以通过自定义提示词(Prompts)和集…

【VMware Workstation】公司所有主机和虚拟机ip互通,以及虚拟机目录迁移

文章目录 1、场景2、环境3、实战3.1、所有主机和虚拟机ip互通Stage 1 : 【虚拟机】设置为桥接模式Stage 2 : 【虚拟机】设置ipStage 3 : 【路由器】ARP 静态绑定MACStage 3-1 ping 路由器 ipStage 3-2 【静态绑定】虚拟机查看mac地址Stage 3-3 【静态绑定】路由器ARP 静态绑定 …

eclipse自动跳到console 解决办法

eclipse启动服务后,想看一些properties信息或者别的,但老是自动跳转到console页面,下面是解决办法: Eclipse中按照如下顺序找到设置菜单的位置: Window — Preferences — Run/Debug — Console 找到以下两项&#xf…

阿里云CentOS7安装ZooKeeper单机模式

前提条件 阿里云CentOS7安装好jdk,可参 hadoop安装 的jdk安装部分 下载 [hadoopnode1 ~]$ cd softinstall [hadoopnode1 softinstall]$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz 解压 [hadoopnode1 …

【论文阅读】FlipCAM:高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法

【论文阅读】FlipCAM:高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法 文章目录 【论文阅读】FlipCAM:高分辨率遥感影像弱监督建筑物提取的特征级翻转增强方法一、介绍二、方法2.1 准备2.2 一致性的架构2.3 SAM模块2.4 建筑提取模式 三、实验结果…

网络工程师实验命令(华为数通HCIA)

VRP系统的基本操作 dis version #查看设备版本信息 sys #进入系统视图 system-name R1 #改设备名字为R1进入接口配置IP地址 int g0/0/0 ip address 192.168.1.1 255.255.255.0 #配置接口地址为192.168.1.1/255.255.255.0 ip address 192.168.1.2 24 sub #此…

【C语言】预处理常见知识详解(宏详解)

文章目录 1、预定义符号2、define2.1 define 定义常量2.2 define 定义宏 3、#和##3.1 **#**3.2 **##** 4、条件编译(开关) 1、预定义符号 在C语言中内置了一些预定义符号,可以直接使用,这些符号实在预处理期间处理的,…

云蜜罐技术(德迅猎鹰)诞生

数字化程度高且高价值信息密集的行业,如金融、能源、互联网、政府、教育、医疗、军工等行业,面对日益规模化、专业化的网络攻击,渐渐不再满足于一味的防守加固。除了巩固防线之外,他们愈发看重主动出击、感知更大范围内的攻击&…

uniapp调用腾讯图形验证码,兼容h5、APP(安卓)

因项目要兼容安卓APP&#xff0c;所以使用webview做成了一个组件 新建hybrid文件夹&#xff0c;创建要在webview引入的html文件 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport"content"widt…

Jenkins拉取github项目相关问题

1.私有仓库问题 1.1如果你的仓库是私有的&#xff0c;21年起github就不支持账号密码的方式拉取代码了 那么就需要在github上面创建一个token (classic) 然后在Jenkins代码设置那里 然后应该就可以顺利打包了。 2.找不到pom&#xff08;多了一层文件夹&#xff09;问题 解…

Svg Flow Editor 原生svg流程图编辑器(四)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;四&#xf…

边缘计算与云计算总结

一. EdgeGallery 简介 MEC场景下的EdgeGallery是让资源边缘化&#xff0c;实时完成移动网络边缘的业务处理&#xff0c;MEC场景下的EdgeGallery让开发者能更便捷地使用 5G 网络能力&#xff0c;让5G能力在边缘触手可及。 EdgeGallery是由华为、信通院、中国移动、中国联通、…

TheMoon 恶意软件短时间感染 6,000 台华硕路由器以获取代理服务

文章目录 针对华硕路由器Faceless代理服务预防措施 一种名为"TheMoon"的新变种恶意软件僵尸网络已经被发现正在侵入全球88个国家数千台过时的小型办公室与家庭办公室(SOHO)路由器以及物联网设备。 "TheMoon"与“Faceless”代理服务有关联&#xff0c;该服务…

Linux内核之最核心数据结构之一:struct file(三十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

ubuntu编译OpenCV and seetaFace2

opencv opencv-4.5.2 opencv_contrib-4.5.2 SeetaFace2 SeetaFace2-master https://github.com/seetafaceengine 指定安装目录&#xff0c;和OpenCV放一个目录下了 安装前 安装 安装后 Qt安装 Windows下 Linux下 报错1 原因&#xff1a; 报错…

Linux指令大全,第二篇(超详细版)

目录 9.1 链接文件的命令 10.1. 用户和权限 11.1 文件压缩和解压命令 12.1 文件操作命令补充 13.1 Vim编辑器的使用 14.1 Linux开关机命令 15.1 Shell Linux 程序设计&#xff08;未完持续更新~&#xff09; 16.1 以上运行效果图如下 9.1 链接文件的命令 9.1.1 …

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展&#xff0c;信息的获取变得比以往任何时候都更加便捷。在数字化时代&#xff0c;人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息&#xff0c;然而&#xff0c;这种机械式的检索方式有时候并不…

鱼眼相机的测距流程及误差分析[像素坐标系到空间一点以及测距和误差分析]

由于最近在整理单目测距的内容&#xff0c;顺手也总结下鱼眼相机的测距流程和误差分析&#xff0c;如果有错误&#xff0c;还请不吝赐教。 参考链接: 鱼眼镜头的成像原理到畸变矫正&#xff08;完整版&#xff09; 相机模型总结&#xff08;针孔、鱼眼、全景&#xff09; 三维…