当前位置: 首页 > news >正文

tensor张量 ------ python特殊的数据结构

点赞收藏关注!
如需转载请注明出处!

张量与数组和矩阵非常相似。

  • 在PyTorch中,使用张量来编码模型的输入和输出,以及模型的参数。

  • 张量可以在GPU或其他硬件加速器上运行。 张量和NumPy数组通常可以共享相同的底层内存,从而消除了复制数据的需要。

  • 对自动微分进行了优化。

一: Tensor构建

  • 张量可以直接从数据中创建。数据类型是自动推断的
import torch
import numpy as np
data = [[1, 2],[3, 4]]
x_data = torch.tensor(data)
  • 张量可以从NumPy数组中创建
np_array = np.array(data)
x_np = torch.from_numpy(np_array)
  • 从另一个tensor创建
#新张量保留参数张量的属性(形状,数据类型)
x_ones = torch.ones_like(x_data) # 保留x_data的属性
print(f"Ones Tensor: \n {x_ones} \n")
x_rand = torch.rand_like(x_data, dtype=torch.float) # 重写x_data的数据类型
print(f"Random Tensor: \n {x_rand} \n")
  • 随机量或者常量初始化
shape = (2,3,)#决定了输出张量的维数
rand_tensor = torch.rand(shape)
ones_tensor = torch.ones(shape)
zeros_tensor = torch.zeros(shape)
print(f"Random Tensor: \n {rand_tensor} \n")
print(f"Ones Tensor: \n {ones_tensor} \n")
print(f"Zeros Tensor: \n {zeros_tensor}")

二:Tensor常用操作

张量属性描述它们的形状、数据类型和存储它们的设备


tensor = torch.rand(3,4)
print(f"Shape of tensor: {tensor.shape}")
print(f"Datatype of tensor: {tensor.dtype}")
print(f"Device tensor is stored on: {tensor.device}")
  • 将Tensor转到GPU上
# We move our tensor to the GPU if available
if torch.cuda.is_available():
tensor = tensor.to('cuda')
  • Tensor索引
tensor = torch.ones(4, 4)
print('First row: ',tensor[0])
print('First column: ', tensor[:, 0])
print('Last column:', tensor[..., -1])
tensor[:,1] = 0
print(tensor)
  • Tensor连接concatenate
t1 = torch.cat([tensor, tensor], dim=1)
print(t1)
  • Tensor与NumPy相互转换
t = torch.ones(5)
print(f"t: {t}")
n = t.numpy()
print(f"n: {n}")
tt = torch.from_numpy(n)
print(f"t:{tt}")
  • 数学运算
#计算两个张量之间的矩阵乘法。Y1 y2 y3的值是一样的
y1 = tensor @ tensor.T
y2 = tensor.matmul(tensor.T)
y3 = torch.rand_like(tensor)
torch.matmul(tensor, tensor.T, out=y3)
print(f"y1: {y1}")
print(f"y2: {y2}")
print(f"y3: {y3}")
#它计算元素的乘积。z1 z2 z3的值是一样的
z1 = tensor * tensor
z2 = tensor.mul(tensor)
z3 = torch.rand_like(tensor)
torch.mul(tensor, tensor, out=z3)
print(f"z1: {z1}")
print(f"z2: {z2}")
print(f"z3: {z3}")

如有帮助,点赞收藏关注!

http://www.lryc.cn/news/236410.html

相关文章:

  • openai/chatgpt的api接口,各个模型的最大输入token一览表
  • Spark作业串行与并行提交job
  • HTTP HTTPS 独特的魅力
  • 【nlp】2.5(gpu version)人名分类器实战项目(对比RNN、LSTM、GRU模型)工程管理方式
  • 金蝶云星空对接打通旺店通·旗舰奇门采购退料单查询接口与创建货品档案接口
  • 在线识别二维码工具
  • CICD 持续集成与持续交付——git
  • 光纤的跳线和尾纤
  • SQL SERVER 2008安装教程
  • 好莱坞罢工事件!再次警醒人类重视AI监管,人工智能矛盾一触即发!
  • 深度学习系列54:使用 MMDETECTION 和 LABEL-STUDIO 进行半自动化目标检测标注
  • WSL2环境下Debian 12的Docker安装与配置
  • 11 月 11 日 ROS 学习笔记——ROS 架构及概念
  • BSN专网项目介绍:宁波市区块链新型基础设施“甬链”
  • 【数据库表及字段统计SQL】【mysql】【clickhouse】【oracle】
  • 如何分析伦敦金的价格走势预测?
  • 【设计原则篇】聊聊接口隔离原则
  • 自压缩llm 为 超长记忆之随机编码(非进制编码)
  • 苹果怎么互传照片?简单方法总结好了!
  • 【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】
  • 学习指南:如何快速上手媒体生态一致体验开发
  • 037、目标检测-算法速览
  • 【开发流程】持续集成、持续交付、持续部署
  • Linux——编译器gcc/g++、调试器gdb以及自动化构建工具makefilemake详解
  • Android registerForActivityResults使用详解以及实现原理
  • 模拟实现一个Linux中的简单版shell
  • 扩散模型实战(十):Stable Diffusion文本条件生成图像大模型
  • LaTex编写伪代码,并实现根据所在章编号(连字符),例如算法1-1
  • vue.js javascript js判断是值否为空
  • 网页开发如何实现简易页面跳动/跳转,html课堂练习/作业,页面ABC的相互跳转