首页 > 其他分享 >pytorch--Matrix相关

pytorch--Matrix相关

时间:2024-06-12 14:59:12浏览次数:20  
标签:randn Matrix -- torch device pytorch cuda print tensor

pytorch–Matrix相关
1.矩阵生成
Tensor,即张量,是PyTorch中的基本操作对象,可以看做是包含单一数据类型元素的多维矩阵。从使用角度来看,Tensor与NumPy的ndarrays非常类似,相互之间也可以自由转换,只不过Tensor还支持GPU的加速。
1.1创建一个没有初始化的矩阵
x = torch.empty(2, 2)
print(x)
输出:
tensor([[-1.5151e-28, 1.8553e-42],
[ 0.0000e+00, 0.0000e+00]])
1.2随机初始化的矩阵
x = torch.randn(2, 2)
输出:
tensor([[-0.0755, 0.3629],
[-0.2084, 0.4353]]) #符合正态分布
1.3创建零矩阵
x = torch.zeros((2, 2), dtype=int) #dtype设置数据类型
输出;
tensor([[0, 0],
[0, 0]])
1.4通过数据直接初始化
x = torch.tensor([2.5,3.5])
1.5设定范围初始化
x = torch.range(1,10,2) #三个参数分别为起始值,结束值,步长
输出:
tensor([1., 3., 5., 7., 9.]) #数据类型为float

2.tensor的运算
2.1绝对值
x = torch.randn(2, 3).cuda(0) #随机生成,使用gpu计算
print(x)
b = torch.abs(x)
print(b)
输出:
tensor([[ 0.4277, 0.6996, -0.4395],
[ 1.4346, -0.5341, -0.6967]], device=‘cuda:0’)
tensor([[0.4277, 0.6996, 0.4395],
[1.4346, 0.5341, 0.6967]], device=‘cuda:0’)
2.2矩阵相加
a = torch.randn(2, 3).cuda(0)
print(a)
b = torch.randn(2, 3).cuda(0)
print(b)
c = torch.add(a, b)
print©
输出:
tensor([[ 0.1433, 1.0482, 0.0479],
[-0.4808, 0.1263, -3.5381]], device=‘cuda:0’)
tensor([[ 0.2173, -1.4631, -1.9016],
[ 1.1502, -1.1447, 1.1478]], device=‘cuda:0’)
tensor([[ 0.3605, -0.4149, -1.8537],
[ 0.6693, -1.0184, -2.3903]], device=‘cuda:0’)
e = torch.add(d,10) #矩阵和标量相加
输出:
tensor([[10.3605, 9.5851, 8.1463],
[10.6693, 8.9816, 7.6097]], device=‘cuda:0’)
2.3裁剪
a = torch.randn(2, 3).cuda(0)
print(a)
b = torch.clamp(a,-0.1,0.1)#后两参数为上下边界,范围之外的,用边界替换
print(b)
tensor([[ 5.3171e-01, -1.5754e+00, 1.8492e-03],
[-7.7089e-01, -6.3851e-02, 1.2988e-03]], device=‘cuda:0’)
tensor([[ 0.1000, -0.1000, 0.0018],
[-0.1000, -0.0639, 0.0013]], device=‘cuda:0’)
2.4矩阵相除
a = torch.randn(2, 3).cuda(0)
print(a)
b = torch.randn(2, 3).cuda(0)
print(b)
c = torch.div(a, b)#对应元素相除
print©
输出:
tensor([[ 0.0519, -0.6156, -0.2791],
[ 0.0302, 0.5509, 0.6499]], device=‘cuda:0’)
tensor([[-0.4269, 1.1787, -0.4143],
[-0.0453, 0.9825, 0.4282]], device=‘cuda:0’)
tensor([[-0.1216, -0.5223, 0.6737],
[-0.6654, 0.5608, 1.5177]], device=‘cuda:0’)
2.4求幂
a = torch.randn(2, 2).cuda(0)
print(a)
b = torch.pow(a, 2)#求平方
print(b)
输出:
tensor([[ 0.1320, -0.8886],
[-1.0319, 0.2598]], device=‘cuda:0’)
tensor([[0.0174, 0.7896],
[1.0648, 0.0675]], device=‘cuda:0’)
2.5矩阵乘法
a = torch.randn(2, 2).cuda(0)
print(a)
b = torch.randn(2, 2).cuda(0)
print(b)
c = torch.mm(a, b.T)#a和b的转置相乘
print©
输出:
tensor([[ 0.9191, 0.7436],
[-0.3451, 1.2992]], device=‘cuda:0’)
tensor([[-0.2323, 2.1104],
[-0.7523, 0.5111]], device=‘cuda:0’)
tensor([[ 1.3559, -0.3113],
[ 2.8219, 0.9236]], device=‘cuda:0’)
2.6矩阵和列向量相乘
a = torch.randn(2, 3).cuda(0)
print(a)
b = torch.randn(3).cuda(0)
print(b)
c = torch.mv(a, b)#相当于a乘上b的转置
print©
输出:
tensor([[-1.7464, 0.0637, 0.4352],
[ 0.7413, -1.0528, -0.7528]], device=‘cuda:0’)
tensor([1.5810, 0.5887, 0.7501], device=‘cuda:0’)
tensor([-2.3972, -0.0124], device=‘cuda:0’)
2.7矩阵拼接
(1)torch.cat
a = torch.randn(2,3,4)
b = torch.randn(2,1,4)
c = torch.cat((a, b),dim=1)# 在tensor第二个维度拼接,即第二个中括号里
输出:
tensor([[[-0.0326, -0.7061, 1.5002, -0.3364],
[ 0.4779, 0.8947, 0.4408, 0.7752],
[-1.4860, -0.4548, -1.1087, 0.7338]],

    [[ 0.8744, -1.1853,  0.4264,  1.0947],
     [ 1.5023, -0.0208,  0.6415, -0.6923],
     [-0.0623,  0.4951,  0.1186,  0.6621]]])

tensor([[[ 0.2769, 1.4247, 0.3008, 1.9411]],

    [[-3.6871, -2.4743, -0.2735,  0.7840]]])

tensor([[[-0.0326, -0.7061, 1.5002, -0.3364],
[ 0.4779, 0.8947, 0.4408, 0.7752],
[-1.4860, -0.4548, -1.1087, 0.7338],
[ 0.2769, 1.4247, 0.3008, 1.9411]],

    [[ 0.8744, -1.1853,  0.4264,  1.0947],
     [ 1.5023, -0.0208,  0.6415, -0.6923],
     [-0.0623,  0.4951,  0.1186,  0.6621],
     [-3.6871, -2.4743, -0.2735,  0.7840]]])

(2)torch.stake
a = torch.rand(3, 3).cuda(0)
b = torch.rand(3, 3).cuda(0)
print(torch.stack((a, b), dim=0).shape)#拼接之后会高一个维度
torch.Size([2, 3, 3])
2.8维度转换
a = torch.rand(2,4,2)
print(a)
print(a.view(2, 8)) #压缩维度
print(a.view(2,2,2,2)) #扩展维度
输出:
tensor([[[0.3526, 0.7707],
[0.9576, 0.8122],
[0.4288, 0.0359],
[0.7087, 0.6782]],

    [[0.9383, 0.6101],
     [0.5572, 0.0409],
     [0.7279, 0.5749],
     [0.5316, 0.2492]]])

tensor([[0.3526, 0.7707, 0.9576, 0.8122, 0.4288, 0.0359, 0.7087, 0.6782],
[0.9383, 0.6101, 0.5572, 0.0409, 0.7279, 0.5749, 0.5316, 0.2492]])
tensor([[[[0.3526, 0.7707],
[0.9576, 0.8122]],

     [[0.4288, 0.0359],
      [0.7087, 0.6782]]],


    [[[0.9383, 0.6101],
      [0.5572, 0.0409]],

     [[0.7279, 0.5749],
      [0.5316, 0.2492]]]])

2.9矩阵分割
#split操作
g = torch.rand(4,2,2)
h = torch.split(g,2,0)#2代表划分长度,0代表第0维进行分割
print(g.size())
for i in h:
print(i.size())
输出:
torch.Size([4, 2, 2])
torch.Size([2, 2, 2])
torch.Size([2, 2, 2])
2.10两个维度交换
x.transpose(dim0, dim1)

x = torch.rand(2,2,1)
print(x)
x= x.transpose(1, 2)
print(x)
输出:
tensor([[[0.1303],
[0.3482]],

    [[0.5394],
     [0.9294]]])

tensor([[[0.1303, 0.3482]],

    [[0.5394, 0.9294]]])

标签:randn,Matrix,--,torch,device,pytorch,cuda,print,tensor
From: https://blog.csdn.net/SWZ156/article/details/139626550

相关文章

  • 大模型三种架构
    大模型进化树灰色代表其他模型粉色表示encoder-only绿色代表encoder-decoder蓝色代表decoder-only1.encoder-only代表的有google的bert模型。专注于理解和编码输入信息,常用于分类、标注等任务优点:强大的理解能力:能够有效处理和理解输入数据。缺点:生成能力有限:不擅......
  • 细胞计数算法 —— 软件与平台实现
    细胞计数算法(自动识别细胞并统计存活)——软件与平台实现结果展示项目介绍项目背景算法详解结果展示原图识别效果图项目介绍项目分为软件和平台双形态。软件可发送邮件至[email protected]处获取,平台可经由网址http://60.204.154.12访问使用。项目以霍......
  • AiP74LVC1T45GB236.TR SOT23-6缓冲器/驱动器双电源接口电平转换
    AIP74LVC1T45GB236.TR是一款电平转换芯片,它的应用领域非常广泛,主要包括: 1.嵌入式系统:在嵌入式系统中,由于不同的外设可能工作在不同的电源电压下,该电平转换器可用于确保微控制器和其他逻辑电路之间的信号传输正确无误。 2.汽车电子:汽车电子系统经常需要处理来自不同电源......
  • 【Cesium】Vue+js+Cesium实现海康监控视频云台控制
    1.硬件设备与视频流接入    如需要一步上一篇博客【Cesium】Vue+js+Cesium实现监控视频流接入-CSDN博客文章浏览阅读308次,点赞12次,收藏17次。Vue2+js+Cesium实现监控视频流接入与相机云台控制https://blog.csdn.net/weixin_51540717/article/details/139614406?csdn_......
  • 一个完整回归机器学习案例
    如何端到端解决预测建模机器学习问题?我们将通过一个案例研究Python中的回归预测建模问题,包括应用机器学习过程的每一步。完成这个项目后,我们要知道:如何端到端解决回归预测建模问题如何使用数据转换来提高模型性能如何使用算法调优来提高模型性能如何使用集成方法和集......
  • 基础设施建设——全局异常请求处理
    基础设施建设——全局异常请求处理1.引言在大型微服务架构中,伴随着错综复杂的调用链,统一的、全局的异常请求兜底处理就显得非常重要,如果没有全局统一的请求/响应规范,上下游之间的接口调用、协同配合将会变得异常困难,但是单纯的在业务逻辑中声明可能抛出的异常或者可能返回的错误......
  • 目标检测中的anchor机制
    目录一、目标检测中的anchor机制1.什么是anchorboxes?二、什么是Anchor?​编辑三、为什么需要anchorboxes?四、anchorboxes是怎么生成的?五、高宽比(aspectratio)的确定六、尺度(scale)的确定七、anchorboxes数量的确定八、Anchorboxes的用途  九、anchorboxes对......
  • 自动求导
    向量链式法则标量链式法则拓展到向量例1例2自动求导自动求导计算一个函数在指定值上的导数计算图将代码分解成操作子将计算表示成一个无环图显式构造(Tensorflow/Theano/MXNet)隐式构造(Pytorch/MXNet)自动求导的两种模式正向累积反向累积(反向传递)a.构造计......
  • TimerTask 定时任务
    定时任务就是在指定时间执行程序,或周期性执行计划任务。Java中实现定时任务的方法有很多,本文从从JDK自带的一些方法来实现定时任务的需求。一、Timer和TimerTaskTimer和TimerTask可以作为线程实现的常见方式,JDK1.5之后定时任务推荐使用ScheduledThreadPoolExecutor。1、快......
  • Arria 10 GX现场可编程门阵列10AX115N1F40I1SG、10AX115R2F40I2SG、10AX115R2F40I1SG
    Arria®10器件系列包括高性能,低功耗的20nm中端FPGA和SoC。Arria®10器件系列实现了:比上一代中高端FPGA更高的性能。通过一套综合节能技术来降低功耗。Arria®10器件专为各领域中高性能、功耗敏感的中端应用而设计。与竞争对手相比,利用公开的OpenCore设计,Arria®10F......