PyTorch深度学习基础之Tensor对象及其应用的讲解及实战(附源码 简单易懂 包括分段 映射 矩阵乘法 随机数等等)

news2025/2/24 3:02:13

觉得有帮助请点赞关注收藏 有问题可评论区留言~~~

Tensor对象是一个维度任意的矩阵,但是一个Tensor中所有元素的数据类型必须一致。torch包含的数据类型和普遍编程语言的数据类型类似,包含浮点型,有符号整型和无符号整形,这些类型既可以定义在CPU上,也可以定义在GPU上。在使用Tensor数据类型时,可以通过dtype属性指定它的数据类型,device指定它的设备(CPU或者GPU)

1:基本定义

代码如下 可查看tensor的基本类型以及运行设备

import torch
import  numpy as np
print('torch.tensor 默认为:{}'.format(torch.Tensor(1).dtype))
a=torch.tensor([[1,2],[3,4]],dtype=torch.float64)
print(a)
#cpu -gpu之间转换

c=torch.ones((2,2))
c=c.to('cpu',torch.double)
print(c.device)

输出如下 

 2:矩阵乘法

对Tensor执行算术符的运算时 是两个矩阵对应元素的运算,torch.mm执行矩阵乘法的计算

代码如下

 

import torch
import  numpy as np

#矩阵对应元素运算
a=torch.tensor([[1,2],[3,4]])
b=torch.tensor([[1,2],[4,6]])
c=a*b
print("每个元素相乘",c)
c=torch.mm(a,b)
print("矩阵乘法",c)

3:分段、化整、映射函数

clamp起的是分段函数的作用,可以用于去除矩阵中过小或者过大的元素,round函数将小数部分化整,tanh计算双曲正切函数,该函数将值映射到0,1

代码如下

import torch
import  numpy as np

#特定功能函数
#clamp分段
a=torch.tensor([[1,2],[3,4]])
print(torch.clamp(a,min=2,max=3))
#round化整
a=torch.tensor([[1.1,0.5],[0.6,-1.2]])
print(torch.round(a))
#tanh双曲正切 映射到0 1
print(torch.tanh(a))

 四、arange等方法创建数据

除了直接从ndarray或list类型的数据中创建Tensor外,PyTorch还提供了一些函数可以直接创建数据,这类函数往往需要提供矩阵的维度,它和python内置的range的使用方法基本想吐,其第三个参数是步长,linsapce函数第三个参数指定返回的个数。ones返回全1,zeors返回全0

import torch
import  numpy as np

#直接 创建数据
print(torch.arange(5))
print(torch.arange(1,5,2))
print(torch.linspace(0,5,10))
#全0 全1
print(torch.ones(3,3))
print(torch.zeros(3,3))

 五、rand返回随机数

rand返回从0 1均匀分布采样的元素所组成的矩阵,randn返回从正态分布采样的元素所组成的矩阵,randint返回指定区间的均匀分布采样的随机整数所组成的矩阵 

代码如下

import torch
import  numpy as np
print('torch.tensor 默认为:{}'.format(torch.Tensor(1).dtype))
a=torch.tensor([[1,2],[3,4]],dtype=torch.float64)
print(a)
#cpu -gpu之间转换

c=torch.ones((2,2))
c=c.to('cpu',torch.double)
print(c.device)
#矩阵对应元素运算
a=torch.tensor([[1,2],[3,4]])
b=torch.tensor([[1,2],[4,6]])
c=a*b
print("每个元素相乘",c)
c=torch.mm(a,b)
print("矩阵乘法",c)
#特定功能函数
#clamp分段
a=torch.tensor([[1,2],[3,4]])
print(torch.clamp(a,min=2,max=3))
#round化整
a=torch.tensor([[1.1,0.5],[0.6,-1.2]])
print(torch.round(a))
#tanh双曲正切 映射到0 1
print(torch.tanh(a))
#直接 创建数据
print(torch.arange(5))
print(torch.arange(1,5,2))
print(torch.linspace(0,5,10))
#全0 全1
print(torch.ones(3,3))
print(torch.zeros(3,3))
#随机
print(torch.rand(3,3))
print(torch.randn(3,3))
print(torch.randint(0,9,(3,3)))

创作不易 觉得有帮助请点赞关注收藏~~~

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

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

相关文章

typora免费安装版教程,支持Windows、Mac、Linux

大家好,我是可乐,本篇文章为大家介绍 Typora快捷键、Typora免费安装教程。 Typora是一款简单易用的Markdown编辑器。 目前 Typora 官方是不提供免费版下载了,需要一次性购买版权,支持正版的可以直接前往官网购买,89 …

深圳CPDA认证|学数据分析,其实就是寻找数据背后的规律

现如今,我们正处在一个互联网发展的时代,大大小小的企业对于数据分析相关岗位的需求正开始逐渐增加,因为所有的企业都有数据,企业需要让数据分析师通过整理、分析企业数据总结出企业目前的发展现状,并且也要为企业做出…

【c++】虚函数,纯虚函数,抽象类

这里写目录标题虚函数纯虚函数抽象类为什么抽象类不能创建对象?注意点:接口类如何设计虚析构总结:构造函数为什么不能是虚函数有虚函数的对象创建过程虚函数 虚函数:给成员函数前面加上virtual关键字。 1.派生类中定义虚函数必须…

RS485电工详解

串口数据帧我们学过,但到RS485是不是就卡壳了? 空闲状态:AB线悬浮在2.3V的样子。GND是0V,5V是4.75v 工作时,AB线在2.3v上做逻辑01(-2v,2v)跳变。 这图是不是还不太好理解&#xff1…

Spring事务数据库连接池流程原理详细分析

文章目录 文章目录文章目录[toc]▌Spring事务管理环境搭建标准配置声明式事务总结▌SqlSessionFactoryXML 中构建 SqlSessionFactory获得 SqlSession 的实例代码实现▌作用域(Scope)和生命周期SqlSessionFactoryBuilder(构造器)Sq…

Android App开发中OpenGL三维投影的讲解及实现(附源码和演示 简单易懂)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、三维投影 OpenGL,定义了跨语言跨平台的图形程序接口,对于Android开发者来说,OpenGL就是用来绘制三维图形的技术手段。当然OpenGL并不仅限于展示静止的三维图形,也能用来播…

【0基础百日刷题】洛谷刷题知识拾遗

百日刷题一.洛谷刷题得1.P1420差分数组2.P2669数列求和3.P1307数字反转4.P5725三角形5.P1980计数问题6.P1217回文质数刷题得意义: 有时候会发现一个简单的题目总是通不过测试,调试一次 就能找出一处bug。这都是我们编程时对逻辑的思考不充分而导致的失误…

听说,清华毕业分享出Redis实战视频及文档,共2.3G

前言 首先我们先来看一下redis的概念: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010…

【App自动化测试】(三)使用Appium进行自动化用例录制

目录1. Appium Inspctor 功能2. Appium inspector 页面结构3. 使用Appium Inspctor 进行用例录制3.1 获取 app 的信息3.2 配置待测应用3.3 使用Appium Inspector进行自动化脚本录制3.3.1 操作步骤3.3.2 自动化测试用例结构分析3.3.2.1 Appium Inspector生成用例脚本3.3.2.2 对A…

数据结构-难点突破(C++实现并查集+路径优化,详解哈夫曼编码树)

文章目录1. 并查集2. 哈夫曼编码树1. 并查集 并查集是一个多棵树的集合(森林)。 并查集由多个集合构成,每一个集合就是一颗树。 并:合并多个集合。查:判断两个值是否再一个集合中。 每棵树存在数组中,使…

js 中的 Event Loop 以及 宏任务 与 微任务

目录前言1、JS 的 执行引擎 与 执行环境2、js 是单线程的一、事件循环(Event Loop)二、任务队列三、宏任务 与 微任务1、宏任务2、微任务3、宏任务与微任务的运行机制四、Event Loop 实例案例一案例二前言 1、JS 的 执行引擎 与 执行环境 简单来说&…

SpringCloud微服务(八)——OpenFeign服务调用

OpenFeign服务调用 SpringCloud github官网:https://github.com/spring-cloud/spring-cloud-openfeign Feign是一个声明式的Web Service客户端。它的出现使开发Web Service客户端变得很简单。使用Feign只需要创建一个接口加上对应的注解,比如&#xf…

基于java+springboot+mybatis+vue+elementui的人职匹配推荐系统

项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,对于人职匹配推荐系统当然也不能排除在外,随着网络技术的不断成熟,带动了人职匹配推荐系统,它彻底改变…

分享一下前几个月我做的超炫的登录页面

先给大家看看登录页面的效果演示 这个登录页面分为三个部分(页面切换:连续按五次V,大小写都可以) 第一个(最初的鱼儿游动页面) 登录、切换页面、和鱼儿游动这个页面的代码就不放在这里了,这个虽…

RabbitMQ 入门案例项目

写在前面 本文不作消息队列的实现原理、异步处理优劣、rabbitmq安装说明、消息工作模式等内容分析,只讲述rabbitmq实际开发中的步骤说明,帮助同学快速上手体验消息队列的使用。 本文使用SpringAMQP,并非rabbitmq官方文档上的原生http请求连…

Jupyter notebook在超算平台上使用的详细教程

Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等…

LeetCode 数据结构与算法:最大子数组和

打开我的题库,调为简单难度。 计算最大子数,直接给我难住。 报错铺满屏幕,凝望没有思路。 缝缝补补做出,击败零个用户。 翻阅评论找补,令我勃然大怒。 打开思维第一步,编写代码求数组, …

报错解决:Process finished with exit code -1073741819 (0xC0000005)

简单记录一下程序异常终止,抛出 Process finished with exit code -1073741819 (0xC0000005) 的解决方法。 一、程序中文件位置错误/缺少文件 位置错误1:如果使用相对路径的话,推荐换成绝对路径进行排查。位置错误2:如果使用了o…

CAN总线协议测试拓扑图

记录测试CAN总线协议, CAN总线目前主要应用在汽车。 记录在PC使用USB-CAN连接测试

Talk预告 | Salesforce AI研究院研究科学家徐嘉诚:文本生成中的结构化解码

本期为TechBeat人工智能社区第457期线上Talk! 北京时间11月23日(周三)20:00,Salesforce AI研究院研究科学家——徐嘉诚的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “文本生成中的结构化解码”,届时将详细讲解…