PyTorch基础:Tensor类型张量的构建与相互转换

PyTorch基础:Tensor类型张量的构建与相互转换

在这里插入图片描述

🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~
💡 创作高质量博文,分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 一、引言 🔥
  • 二、Tensor的创建 🚀
  • 三、Tensor之间的相互转换 🌈
  • 四、总结 🎯
  • 五、最后 🤝

一、引言 🔥

  在深度学习和PyTorch框架中,张量(Tensor)是计算的基本单位。与NumPy数组类似,PyTorch的Tensor也是多维数组,但它可以在GPU上运行,从而加速计算。在PyTorch中,Tensor不仅用于存储数据,还用于执行各种数学运算。本文将详细介绍如何在PyTorch中构建Tensor类型张量,并探讨它们之间的相互转换。

二、Tensor的创建 🚀

  在PyTorch中,可以使用多种方法来创建Tensor。以下是一些常用的方法:

  1. 从Python列表创建Tensor
import torch# 从Python列表创建Tensor
tensor_from_list = torch.tensor([1, 2, 3, 4, 5])
print(tensor_from_list)

输出:

tensor([1, 2, 3, 4, 5])进程已结束,退出代码0
  1. 从NumPy数组创建Tensor
import torchimport numpy as np# 从NumPy数组创建Tensor
numpy_array = np.array([[1, 2], [3, 4]])
tensor_from_numpy = torch.tensor(numpy_array)
print(tensor_from_numpy)

输出:

tensor([[1, 2],[3, 4]])进程已结束,退出代码0
  1. 使用torch.zerostorch.ones创建全零或全一Tensor
# 创建全零Tensor
zeros_tensor = torch.zeros(3, 4)
print(zeros_tensor)# 创建全一Tensor
ones_tensor = torch.ones(2, 2)
print(ones_tensor)

输出:

tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])
tensor([[1., 1.],[1., 1.]])进程已结束,退出代码0
  1. 使用torch.randtorch.randn创建随机Tensor
# 创建随机Tensor,值在[0, 1)之间
rand_tensor = torch.rand(2, 3)
print(rand_tensor)# 创建标准正态分布的随机Tensor
randn_tensor = torch.randn(2, 2)
print(randn_tensor)

输出(每次运行可能不同):

tensor([[0.3052, 0.2928, 0.1918],[0.6436, 0.6674, 0.3006]])
tensor([[ 0.4397,  0.0961],[-0.2740,  0.3176]])进程已结束,退出代码0

三、Tensor之间的相互转换 🌈

  在PyTorch中,Tensor之间可以通过各种方式进行相互转换。以下是一些常用的转换方法:

  1. Tensor与NumPy数组之间的转换
import torch
import numpy as np# Tensor转换为NumPy数组
tensor = torch.tensor([[1, 2], [3, 4]])
numpy_array = tensor.numpy()
print(numpy_array)# NumPy数组转换为Tensor
numpy_array = np.array([[1, 2], [3, 4]])
tensor = torch.from_numpy(numpy_array)
print(tensor)

输出:

[[1 2][3 4]]
tensor([[1, 2],[3, 4]])进程已结束,退出代码0
  1. Tensor类型之间的转换

  在PyTorch中,可以使用.to()方法来转换Tensor的类型。例如,将Tensor从CPU转移到GPU,或更改其数据类型。

import torch# 创建一个CPU上的Tensor
cpu_tensor = torch.tensor([1.0, 2.0, 3.0])
print(cpu_tensor, cpu_tensor.dtype)# 将Tensor转移到GPU(如果可用)
if torch.cuda.is_available():gpu_tensor = cpu_tensor.to('cuda')print(gpu_tensor, gpu_tensor.dtype)# 更改Tensor的数据类型
float_tensor = torch.tensor([1, 2,3], dtype=torch.float32)
int_tensor = float_tensor.to(torch.int64)
print(int_tensor, int_tensor.dtype)

输出(如果CUDA可用):

tensor([1., 2., 3.]) torch.float32
tensor([1., 2., 3.], device='cuda:0') torch.float32
tensor([1, 2, 3]) torch.int64进程已结束,退出代码0
  1. Tensor的维度变换

  在PyTorch中,可以使用view, reshape, permute等方法来改变Tensor的维度。

import torch# 创建一个一维Tensor
tensor = torch.tensor([1, 2, 3, 4])
print(tensor)# 使用view方法改变维度为2x2
reshaped_tensor = tensor.view(2, 2)
print(reshaped_tensor)

输出:

tensor([1, 2, 3, 4])
tensor([[1, 2],[3, 4]])进程已结束,退出代码0

四、总结 🎯

  在本文中,我们详细介绍了如何在PyTorch中创建Tensor类型张量,并探讨了它们之间的相互转换。通过掌握Tensor的创建和转换方法,我们可以更加灵活地处理深度学习模型中的数据。


五、最后 🤝

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

  🎉 感谢阅读,祝你编程愉快! 🎉

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

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

相关文章

【Java】Java基础(实验一)

目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 掌握Java程序的编辑、调试与运行;了解Java引用类型,掌握数组的定义和引用。掌握Java基本数据类型和输入输出。掌握Java程序结构 二、实验内容 1.JDK的环境变量设置及测试。 &#xff08…

2023年12月CCF-GESP编程能力等级认证C++编程六级真题解析

一、单选题(共15题,共30分) 第1题 关于C++类和对象的说法,错误的是( )。 A:在C++中,一切皆对象,即便是字面量如整数5等也是对象 B:在C++中,可以自定义新的类,并实例化为新的对象 C:在C++中,内置函数和自定义函数,都是类或者对象 D:在C++中,可以在自定义函数中…

fly-barrage 前端弹幕库(1):项目介绍

fly-barrage 是我写的一个前端弹幕库,由于经常在 Bilibili 上看视频,所以对网页的弹幕功能一直蛮感兴趣的,所以做了这个库,可以帮助前端快速的实现弹幕功能。 项目官网地址:https://fly-barrage.netlify.app/&#xff…

c++获取本地所有IP地址,以及域名解析

#include <iostream> using namespace std; #define _WINSOCK_DEPRECATED_NO_WARNINGS #include <WinSock2.h> #pragma comment(lib,"WS2_32.lib")class CInitSock { public:CInitSock(){//必须要注册网络库WSADATA wsd;if (::WSAStartup(MAKEWORD(2, 2)…

【k8s资源调度-Deployment】

1、标签和选择器 1.1 标签Label 配置文件&#xff1a;在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签&#xff0c;语法如下 创建临时label&#xff1a;kubectl label po <资源名称> apphello -n <命令空间&#xff08;可不加&#xff0…

【SpringBoot】Spring常用注解总结

目录 ⭐spring springmvc和springboot的区别 Autowired 和Resource的区别和联系 1. SpringBootApplication 2. Spring Bean 相关 2.1. Autowired 2.2. Component,Repository,Service, Controller 2.3. RestController 2.4. Scope 2.5. Configuration 3. 处理常见的 HT…

CentOS和Ubuntu之间的区别和联系

CentOS&#xff08;Community ENTerprise Operating System&#xff09;和Ubuntu是两种流行的Linux发行版&#xff0c;它们在企业和个人用户中都有广泛的应用。尽管它们都是基于Linux内核&#xff0c;但它们在设计理念、更新策略、包管理系统等方面存在一些关键的区别和联系。下…

力扣 724. 寻找数组的中心下标

思路&#xff1a; 创建两个变量sum和sum1&#xff0c;sum代表左边元素的和&#xff0c;sum1代表右边元素的和 然后假设从数组下标0开始&#xff0c;一直到最后一个作为中心下标 如果sumsum1&#xff0c;返回此时的中心下标 如果所有下标循环完了&#xff0c;发现没有return…

Sqli-labs靶场第8关详解[Sqli-labs-less-8]

Sqli-labs-Less-8 前言&#xff1a; SQL注入的三个条件&#xff1a; ①参数可控&#xff1b;&#xff08;从参数输入就知道参数可控&#xff09; ②参数过滤不彻底导致恶意代码被执行&#xff1b;&#xff08;需要在测试过程中判断&#xff09; ③参数带入数据库执行。&#…

Pytorch安装如何使用命令确认CUDA版本

Pytorch安装如何使用命令确认CUDA版本 一、NVIDIA版本确认命令解析二、Pytorch对应的NVIDIA版本选择 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、NVIDIA版本确认命令解析 在使用深度学习的Pytorch库时&…

关于字符集(彻底搞清楚一个中文占几个字节?)

目录 一、字符集二、ASCII码(字符编码)三、ISO-8859-1(字符集)四、GBxxx(字符集)五、Unicode码(字符集)六、UTF-8(字符编码)总结 一、字符集 编码与解码 计算机中储存的信息都是用二进制数表示的而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结…

【踩坑】 修复报错 No module named ‘Crypto‘

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 这个直接使用pip安装Crypto是没有用的&#xff0c;网上说的装pycrypto实际上也没有用。 真正需要这样装&#xff1a; pip uninstall crypto pip uninstall pycrypto pip install pycryptodome 再运行就可以用…

Axtue使用笔记

1、有三种方式可以设置元件顺序 第一种是鼠标右键点击顺序&#xff0c;选择调整操作置顶、置底、上移一层、下移一层&#xff1b; 第二种是在顶部工具栏中&#xff0c;选择调整操作置顶、置底、上移一层、下移一层; 第三种是使用快捷键操作 Windows&#xff1a;置顶&#xff1a…

设计模式篇---观察者模式

文章目录 概念结构实例总结 概念 观察者模式&#xff1a;定义对象之间的一种一对多的依赖关系&#xff0c;使得每当一个对象状态发生改变时&#xff0c;其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式&#xff0c;它建立了对象与对象之间的依赖…

Git的基本操作和原理

目录 写在前面的话 为什么要有Git&#xff08;git初识&#xff09;&#xff1f; Git安装(Centos为例) Git基本操作 创建Git本地仓库 Git配置 认识工作区、暂存区、版本库 概念认识 添加文件 查看.git文件 修改文件 版本回退 撤销修改 情况一&#xff1a;…

MATLAB中对多项式求积分和微分

此示例演示如何使用 polyint 和 polyder 函数对由系数向量表示的任何多项式求解析积分或微分。 使用 polyder 获取多项式 p(x)x^3−2x−5 的导数。生成的多项式为 p [1 0 -2 -5]; q polyder(p) q 133 0 -2同样&#xff0c;使用 polyint 对多项式 p(x)4x^3−3x^21 求…

猫头虎分享已解决Bug || TypeError: props is not a function (React)

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【Java程序设计】【C00285】基于Springboot的游戏分享网站(有论文)

基于Springboot的游戏分享网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏分享网站 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;在网站首页可以查看首页、游戏…

redis的搭建 RabbitMq搭建 Elasticsearch 搭建

官网 Download | Redis wget https://github.com/redis/redis/archive/7.2.4.tar.gz 编译安装 yum install gcc g tar -zxvf redis-7.2.4.tar.gz -C /usr/localcd /usr/local/redis make && make install 常见报错 zmalloc.h:50:10: fatal error: jemalloc/jemal…

[算法沉淀记录] 排序算法 —— 归并排序

排序算法 —— 归并排序 算法介绍 归并排序是一种分治算法&#xff0c;由约翰冯诺伊曼在1945年发明。它的工作原理是将未排序的列表划分为n个子列表&#xff0c;每个子列表包含一个元素(包含一个元素的列表被认为是有序的)&#xff0c;然后重复合并子列表以生成新的有序子列表…