【Pytorch神经网络理论篇】 03 Pytorch快速上手(三)张量的数据操作

1 张量的数据操作

1.1 torch.reshape()实现数据维度变化

import torch
a = torch.tensor([[1,2],[3,4]])
print(torch.reshape(a,(1,-1))) # 将其转化为只有1行数据的张量,参数-1表示自动计算
# tensor([[1, 2, 3, 4]])
print(a.reshape((1,-1))) # # 将其转化为只有1行数据的张量,参数-1表示自动计算
# tensor([[1, 2, 3, 4]])
print(a.view((1,-1))) # # 将其转化为只有1行数据的张量,参数-1表示自动计算
# tensor([[1, 2, 3, 4]])

1.2 张量数据的矩阵转置

import torch
b = torch.tensor([[5,6,7],[2,8,0]]) # 定义二维张量
print(torch.t(b)) # 转置矩阵
# 输出 tensor([[5, 2],
#         [6, 8],
#         [7, 0]])
print(torch.transpose(b,dim0=1,dim1=0)) # 转置矩阵,将原有数据的第1个维度切换到第0个维度
# 输出 tensor([[5, 2],
#         [6, 8],
#         [7, 0]])
print(b.permute(1,0)) # 转置矩阵,将原有数据的第1个维度切换到第0个维度
# 输出 tensor([[5, 2],
#         [6, 8],
#         [7, 0]])

1.3 view()与contignous()方法

1.3.1 概述

view()只能作用于整块内存上的张量,若对于非连续内存上的张量则不可以用该函数处理。也无法对transpose()与permute()等改变后的张量再进行变化。

view()需要与contiguous()进行连用,进而保证该张量在同一个内存块中。

1.3.2 代码

import torch
b = torch.tensor([[5,6,7],[2,8,0]]) #定义二维张量
print(b.is_contiguous()) #判断内存是否连续
# 输出 True
c = b.transpose(0,1)
print(c.is_contiguous()) #判断内存是否连续
# 输出 False
print(c.contiguous().is_contiguous()) #判断内存是否连续
# 输出 True
print(c.contiguous().view(-1)) #判断内存是否连续
# 输出 tensor([5, 2, 6, 8, 7, 0])

1.4 torch.cat()数据拼接函数

1.4.1 概述

torch.cat()函数会实现将两个张量沿着指定方向进行拼接===》在神经网络中较为常见

1.4.2 代码

import torch
a = torch.tensor([[1,2],[3,4]]) #定义二维张量
b = torch.tensor([[5,6],[7,8]])print(torch.cat([a,b],dim=0)) #沿着0维度进行连接
# 输出 tensor([[1, 2],
#         [3, 4],
#         [5, 6],
#         [7, 8]])
print(torch.cat([a,b],dim=1)) #沿着1维度进行连接
# 输出 tensor([[1, 2, 5, 6],
#         [3, 4, 7, 8]])

1.5 torch.chunk()实现数据的均匀分割

1.5.1 概述

torch.chunk()将一个多维张量按照指定的维度和拆分数量进行分割,其返回值是元组,不可修改。

1.5.2 代码

import torch
a = torch.tensor([[1,2],[3,4]])print(torch.chunk(a,chunks=2,dim=0)) #将张量a按照第0维度分成两个部分
# 输出 (tensor([[1, 2]]), tensor([[3, 4]]))
print(torch.chunk(a,chunks=2,dim=1)) #将张量a按照第1维度分成两个部分
# 输出 (tensor([[1],[3]]), tensor([[2],[4]]))

1.6 torch.split()实现数据的不均匀分割

import torch
b = torch.tensor([[5,6,7],[2,8,0]])
#按照第1维度分成2个部分
### split_size_or_sections 将按照指定的元素个数对张量数据进行数据拆分,不满足个数的剩余数据将会作为分割数据的最后一部分
print(torch.split(b,split_size_or_sections=(1,2),dim=1) )
# 输出 (tensor([[5],[2]]), tensor([[6, 7],[8, 0]]))

1.7 torch.gather()对张量数据进行检索

1.7.1 概述

torch.gather()对于张量数据中的值按照指定的索引与顺序进行排列,index参数必须是张量类型,要与输入的维度相同

1.7.2 代码

import torch
b = torch.tensor([[5,6,7],[2,8,0]])
# 沿着第1维度,按照index的形状进行取值排列
print(torch.gather(b,dim=1,index=torch.tensor([[1,0],[1,2]])))
#输出 tensor([[6, 5],[8, 0]])# 沿着第0维度,按照index的形状进行取值排列
print(torch.gather(b,dim=0,index=torch.tensor([[1,0,0]])))
#输出 tensor([[2, 6, 7]])print(torch.index_select(b,dim=0,index=torch.tensor(1))) #取出整行或者整列
#输出 tensor([[2, 8, 0]])

1.8 按照指定的阈值对于张量数据进行过滤展示

1.8.1 概述

torch.gt():大于

torch.ge():大于或等于

torch.lt():小于

torch.le():小于或等于

1.8.2 代码

import torch
b = torch.tensor([[1,2],[2,8]])
mask = b.ge(2) #大于或者等于2
print(mask)
# 输出 tensor([[False,  True],
#         [ True,  True]])
print(torch.masked_select(b,mask))
# 输出 tensor([2, 2, 8])

1.9 找出张量中的非零数值的索引

import torch
eye = torch.eye(3) # 生成一个对角矩阵
print(eye)
# 输出 tensor([[1., 0., 0.],
#         [0., 1., 0.],
#         [0., 0., 1.]])
print(torch.nonzero(eye)) # 找出对角矩阵中的非零值索引
# 输出 tensor([[0, 0],
#         [1, 1],
#         [2, 2]])

1.10 根据条件实现对张量的数值取值

import torch
b = torch.tensor([[5,6,7],[2,8,0]])
c = torch.ones_like(b) #生成数值均为1的矩阵
print(c)
# 输出 tensor([[1, 1, 1],
#           [1, 1, 1]])
print(torch.where(b>5,b,c)) #将b中大于5的元素提取出来,值不大于5的部分从c中取得
# 输出 tensor([[1, 6, 7],
#            [1, 8, 1]])

1.11 根据阈值进行数据截断

1.11.1 概述

根据阈值进行数据截断===》用于梯度计算中,为梯度设置一个固定的阈值,避免训练过程中的梯度爆炸。

梯度爆炸:模型每次训练的调整值变得很大,最终导致训练结果难以收敛。

1.11.2 代码

import torch
a = torch.tensor([[1,2],[3,4]])
b = torch.clamp(a,min=2,max=3) #按照最小值2,最大值3进行截断
print(b)
# 输出 tensor([[2, 2],
#              [3, 3]])

1.12 获取数据中的最大值、最小值索引

1.12.1 概述

torch.argmax():返回最大索引

torch.argmin():返回最小索引

1.12.2 代码

import torch
a = torch.tensor([[1,2],[3,4]])
print(torch.argmax(a,dim=0)) # 按照第0维度找出最大索引值
# 输出 tensor([1, 1])
print(torch.argmin(a,dim=1)) # 按照第1维度找出最小索引值
# 输出 tensor([0, 0])
print(torch.max(a,dim=0)) # 按照第0维度找出最大索引值与对应数值
# 输出  torch.return_types.max(values=tensor([3, 4]),indices=tensor([1, 1]))
print(torch.min(a,dim=1)) # 按照第1维度找出最小索引值与对应数值
# 输出 torch.return_types.min(values=tensor([1, 3]),indices=tensor([0, 0]))

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

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

相关文章

写一个包含多个事件四则运算的留存SQL ——impala hive

在实现一个留存业务需求时,碰到了一个难题,我需要提供展示一个按照如下图格式的数据, day 1 ~ day n的第一行是留存用户数量,第二行是一个由多个事件组合执行四则算术运算得到的复合数值,这里碰到的难点主要是第二行的…

V4L2用户空间和kernel层driver的交互过程

这篇文章详细分析了V4L2用户空间和kernel层driver的交互过程,目的只有一个:更清晰的理解V4L2视频驱动程序的系统结构,驱动编程方法,为以后开发视频驱动打好基础既然从用户层出发探究驱动层,这里先贴出应用层code&#…

【Pytorch神经网络理论篇】 04 Variable类型与自动微分模块剖析

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

php 对象赋值后改变成员变量影响赋值对象

话不多说看代码 <?php class obj {}$obj1new obj();//实例化对象 $obj2$obj1;//赋值新对象 $obj1->name"test";//改变老对象的成员变量属性 var_dump($obj1); var_dump($obj2); $obj2->name"name";//改变新对象的成员变量属性 var_dump($obj1); …

Android Camera 通过V4L2与kernel driver的完整交互过程

原文地址&#xff1a;Android Camera 通过V4L2与kernel driver的完整交互过程 作者&#xff1a;xinyuwuxian Android Camera 通过V4L2与kernel driver的完整交互过程之前在 Android Camera 的执行流程http://blog.chinaunix.net/uid-26765074-id-3499537.html这篇文章中已经详细…

【Pytorch神经网络理论篇】 05 Module类的使用方法+参数Parameters类+定义训练模型的步骤与方法

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]

2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 779 Solved: 453[Submit][Status][Discuss]Description 暑假期间&#xff0c;小龙报名了一个模拟野外生存作战训练班来锻炼体魄&#xff0c;训练的第一个晚上&#xff0c;教官就给他们出了个难题。由…

【Pytorch神经网络理论篇】 06 神经元+神经网络模型+全连接网络模型

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

面试题:N皇后问题,思路和python解题笔记

n皇后问题算法思路和python解法 问题描述 n皇后问题&#xff0c;在nn的棋盘上&#xff0c;解出n个皇后所有不能互相攻击的摆法&#xff0c; 皇后在数组中用“Q”表示&#xff0c;空地用“.”表示 返回的数据结构格式要求&#xff1a;[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…

【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络理论篇】 08 Softmax函数(处理分类问题)

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

Python套接字编程Socket Progaming——1

本篇文章是Network And Web Programing-Socket Programing分类中的第一篇文章&#xff0c;内容主要包含 Socket概念理解Socket programing介绍一个简单的TCP协议的server-client程序支持同时处理多个客户端简单server-client连接程序socket的常用选项使用 理解socket概念 一…

【Pytorch神经网络理论篇】 09 神经网络模块中的损失函数

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络理论篇】 10 优化器模块+退化学习率

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

HAProxy负载均衡原理及企业级实例部署haproxy集群

HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案&#xff0c;非常适合于高负载站点的七层数据请求。客户端通过HAProxy代理服务器获得站点页面&#xff0c;而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。 同一客户端访问服务器&…

【Pytorch神经网络实战案例】07 预测泰坦尼克号上生存的乘客

1 样本处理 1.1 载入样本代码---Titanic forecast.py&#xff08;第1部分&#xff09; import numpy as np import torch import torch.nn as nn import torch.nn.functional as F from scipy import stats import pandas as pd import matplotlib.pyplot as plt import os o…

基于sanic的服务使用celery完成动态修改定时任务

首先声明一下 考虑到celery目前和asyncio的不兼容性&#xff0c;协程任务需要转换为非异步的普通方法才能被当做task加入定时&#xff0c;并且celery和asyncio使用可能会带来预想不到的问题&#xff0c;在celery官方第二次承诺的6.0版本融合asyncio之前&#xff0c;需要慎重考虑…

Pyscript,使用Python编写前端脚本

介绍 Anaconda的CEO Peter Wang在前两个月的时候发布了Pyscript&#xff0c;实现了在HTML支持Python的使用&#xff0c;整个引用过程甚至不需要安装任何环境&#xff0c;只需要使用link和script标签即可引用实现Python在HTML中运行的功能&#xff0c;在HTML中也可以运行和使用…

如何把应用程序app编译进android系统

转载&#xff1a;http://ywxiao66.blog.163.com/blog/static/175482055201152710441106/------------------------------------------------------------------把常用的应用程序编译到img文件中&#xff0c;就成了系统的一部分&#xff0c;用户不必自己安装&#xff0c;当然也卸…

【Pytorch神经网络实战案例】08 识别黑白图中的服装图案(Fashion-MNIST)

1 Fashion-MNIST简介 FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。 它是由 Zalando&#xff08;一家德国的时尚科技公司&#xff09;旗下的研究部门提供。其涵盖了来自 10 种类别的共 7 万个不同商品的正面图片。 FashionMNIST 的大小、格式和训练集/测试集划分与…