【深度学习】pytorch的基础操作
import torch
import numpy as np
# 1.1 根据已有的数据创建张量
def test01():
# 1.1 创建标量
data = torch.tensor(10)
print(data)
# 1.2 使用numpy数组来创建张量
data = np.random.randn(2,3)
data = torch.tensor(data)
print(data)
# 1.3使用list列表创建张量
data = [[10., 20., 30.], [40., 50., 60.]]
print(data)
test01()
# 2. 创建指定形状的张量
def test02():
# 2.1 创建一个2行3列的张量
data = torch.Tensor(2,3)
print(data)
# 2.2 可以创建指定值得张量
# 注意传递列表
data = torch.Tensor([2, 3])
print(data)
data = torch.Tensor([10])
print(data)
test02()
# 3.创建指定类型的张量
def tensor03():
# 前面创建的张量都是使用默认类型或者元素类型
# 创建一个 int32类型的张量
data = torch.IntTensor(2,3)
print(data)
torch.ShortTensor(2,3) # 表示创建的是int16张量
torch.LongTensor(2,3) # 表示创建int32张量
torch.FloatTensor(2,3) # 表示创建Float32张量
# 注意:如果创建指定类型的张量,但是传递的数据不匹配,会发生类型转换
data = torch.IntTensor([2.5, 3.5])
print(data)
tensor03()
## 创建线性和随机张量
1. torch.arange 和 torch.linspace 创建线性张量
2. torch.random int_seed 和 torch.random.manual_seed 随机种子设置
3. torch.randn 创建随机张量
import torch
# 1. 创建线性空间的张量
def test01():
# 1.在指定区间按照步长生成元素[start, end, step]
data = torch.arange(0,10,2)
print(data)
test01()
# 在指定区间按照元素个数生成
torch.linspace(0,11,10)
# 创建随机张量
torch.randn(2,3)
# 随机数种子设置
torch.random.initial_seed()
# 必须在同一段代码前提下,可以这样使用,能够浮现结果
torch.random.manual_seed(100)
torch.randn(2,3)
torch.randn(2,3)
## 创建01张量
torch.ones, torch.ones_like
torch.zeros, torch.zeros_like
torch.full, torch.full_like
a = torch.ones(3,2)
a
torch.zeros_like(a)
ccc = torch.full((2,3),5)
torch.full_like(ccc,10)
## 张量的指定类型转换
tensor.type(torch.DoubleTensor)
torch.double()
data = torch.full([2,3],10)
data
print(data.dtype)
## 类型转换
data = torch.full([2,3], 10)
data.dtype
data
# 转化后需要承接一下
data = data.type(torch.DoubleTensor)
data.dtype
# 使用具体类型的函数进行转换
data = torch.full([2,3],10)
data.dtype
# 这种方式更加便捷
data = data.double()
data.dtype
data.int(), data.short(), data.long(), data.float()
# int 32 int 16 int 64 float 32
### 张量的基本运算 add, sub, mul, div, neg等函数, 以及这些函数的带下划线的版本 add_ 、 sub_ 、 mul_ 、 div_ 、 neg_, 其中带下划线的版本为修改原数据
import numpy as np
data = torch.randint(0,10,[2,3])
data
# 1. 不修改原数据
new_data = data.add(10)
new_data
new_data = data.add(10)
new_data
data.add_(10)
# 其它函数
data.sub(100)
data.mul(100)
data.div(100)
data.neg()
### 阿达玛积运算
阿达玛积是指矩阵对应位置的元素相乘
data1 = torch.tensor([[1,2],[3,4]])
data2 = torch.tensor([[5,6],[7,8]])
data = torch.mul(data1, data2)
data
data = data1 * data2
data
### 点集运算
(m,n) * (n,p) = (m,p)
1.运算符用 @ 用于进行两矩阵的点乘运算
2. torch.mm 2维度 torch.bmm 3维度 torch.matmul 多维度
data1 = torch.tensor([[1,2],[3,4],[5,6]])
data2 = torch.tensor([[5,6],[7,8]])
# 第一种方法
data = data1 @ data2
data
data = torch.mm(data1,data2)
data
# 第三种方式
data = torch.matmul(data1, data2)
data
data1 = torch.randn(3,4,5)
data2 = torch.randn(3,5,8)
# b = batch
data = torch.bmm(data1, data2)
data
data1 = torch.randn(3,4,5)
data2 = torch.randn(3,5,8)
torch.matmul(data1,data2).shape
## 指定运算设备
Pytorch 默认会将张量创建在CPU控制的内存中.
1. 使用cuda方法
2. 直接将张量创建在指定设备上
3. 使用to方法
data = torch.tensor([10,20,30])
data,data.device
data = data.cuda()
data,data.device
data = data.cpu()
data,data.device
data = torch.tensor([10,20,30], device="cuda:0")
data.device
data = data.cpu()
data
## 张量的类型转换
张量和numpy的相互转换
data_tensor = torch.tensor([2,3,4])
data_tensor
data_numpy = data_tensor.numpy()
data_numpy
type(data_tensor), type(data_numpy)
注意此时data_tensor和data_numpy 共享内存, 修改其中一个,另外一个也会跟着改变,可以使用copy函数避免共享
data_numpy[0] = 100
data_numpy,data_tensor
data_tensor = torch.tensor([2,3,4])
data_numpy = data_tensor.numpy().copy()
data_numpy[0] = 222
data_numpy
data_tensor
### numpy 转换成张量
1. 使用 from_numpy 可以将ndarray数组转换为Tensor, 默认共享内存,使用copy函数避免共享
2. 使用torch.tensor可以将ndarray数组转换为Tensor. 默认不共享内存
data_numpy = np.array([2,3,4])
data_numpy
# 浅拷贝
data_tensor = torch.from_numpy(data_numpy)
data_tensor
data_tensor = torch.from_numpy(data_numpy.copy())
data_tensor
data_numpy[0] = 100
data_numpy, data_tensor
# 2. 使用torch.tensor 函数
data_numpy = np.array([2,3,4])
data_tensor = torch.tensor(data_numpy)
data_numpy,data_tensor
data_numpy[0] = 100
data_numpy,data_tensor
### 标量张量和数字的转换
对于只有一个元素的张量,使用item方法将该值从张量中提取出来
# 当张量只包含一个元素时,可以通过使用item函数提取出该值
data = torch.tensor([30.])
print(data.item(),data)
data = torch.tensor(30)
data,data.item()
t1 = torch.tensor(30)
t2 = torch.tensor([30])
t3 = torch.tensor([[30]])
print(t1, t2, t3, t1.shape, t2.shape, t3.shape)
# t1 是标量, t2 是一维张量, t2 是二维
## 注意:张量中只有一个元素,如果有多个元素的化,使用item函数可能就会报错
t4 = torch.tensor([30,40])
t4
t4[0].item()
t4.item()
相关文章:
【深度学习】pytorch的基础操作
import torch import numpy as np # 1.1 根据已有的数据创建张量 def test01(): # 1.1 创建标量 data torch.tensor(10) print(data) # 1.2 使用numpy数组来创建张量 data np.random.randn(2,3) data torch.tensor(data) print(data) # 1.3使用list…...

MWORKS--同元软控MWORKS介绍、安装与使用
MWORKS--同元软控MWORKS介绍、安装与使用1 同元软控介绍1.1 同元软控简介1.2 同元软控发展历史2 MWORKS介绍2.1 MWORKS简介2.2 MWORKS产品描述3 装备数字化3.1 发展3.2 内涵3.3 系统模型发展成为产品的一部分3.4 MWORKS系统模型数据管理3.4 MWORKS为装备数字化提供的套件4 下载…...

Python 解决dilb和face_recognition第三方包安装失败
目录 dilb和face_recognition第三方包安装失败 亲测有效的解决方法:whl安装方式 dilb和face_recognition第三方包安装失败 场景复现:因为需要用到dlibface_recognition,基于OpenCV做一些人脸识别的项目,在Pycharm中进行pip清华…...

Mac系统Mysql的8.0.22版本安装笔记和密码重置修改密码等问题方法
忘记密码官网教程地址:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html 5.7数据库安装指南参考:https://jingyan.baidu.com/article/fa4125ac0e3c2928ac709204.html 初次安装8.0.22遇到许多坑,密码修改失败;…...

驱动 | Linux | NVMe 不完全总结
本文主要参考这里 1’ 2 的解析和 linux 源码 3。 此处推荐一个可以便捷查看 linux 源码的网站 bootlin 4。 更新:2022 / 02 / 11 驱动 | Linux | NVMe 不完全总结NVMe 的前世今生从系统角度看 NVMe 驱动NVMe CommandPCI 总线从架构角度看 NVMe 驱动NVMe 驱动的文件…...

一个测试人员,在现阶段的环境下如何在测试行业发展和自我价值。
前言周末和几个测试圈子里的大佬饭局上聊了一些职场和测试职业发展相关的话题,我将聊天的内容做了整理和阐述。。朋友圈有测试同学对这篇文章提了比较深刻的建议,下面是他的评价和建议:评价:据说是大佬饭桌总结,有两点…...

pwn手记录题2
fastbin_reverse_into_tcache(2.34) 本题所使用的libc版本为2.34;(最新版 libc2.34版本已经没有了所谓的hook函数,甚至exit_hook(实际为某个函数指针)也已经不能够使用;能够利用的手法已经很少了; 高版本glibc堆的几…...

CSS ~ 从入门到入坑。
CSS ~ 从入门到入坑。 文章目录CSS ~ 从入门到入坑。what。css 三种实现方式。选择器。id 选择器 > class 选择器 > 标签选择器。标签选择器。类选择器。id 选择器。层次选择器。后代选择器。子选择器。相邻兄弟选择器。通用选择器。结构伪类选择器。属性选择器。字体风格…...

成都哪家机构的Java培训比较好,求一个不坑的?
关于这个问题,相信你会得到很多条答案,以及很多家机构的自荐。既然如此,不如也了解一下老牌IT职业教育机构:有足够丰富的教学经验,丰富的教学产品资源以及成熟的就业保障体系,还有就是承担风险的能力。 很…...

《爆肝整理》保姆级系列教程python接口自动化(十二)--https请求(SSL)(详解)
简介 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编…...

离线数据仓库
1 数据仓库建模 1.1 建模工具 PowerDesigner/SQLYog/EZDML… 1.2 ODS层 (1)保持数据原貌不做任何修改,起到备份数据的作用。 (2)数据采用压缩,减少磁盘存储空间(例如:压缩采用LZO&…...

【前端】Vue项目:旅游App-(23)detail:房东介绍、热门评论、预定须知组件
文章目录目标过程与代码房东介绍landlord热门评论HotComment预定须知Book效果总代码修改或添加的文件detail.vuedetail-book.vuedetail-hotComment.vuedetail-landlord.vue参考本项目博客总结:【前端】Vue项目:旅游App-博客总结 目标 根据detail页面获…...

JUC并发编程与源码分析
一、本课程前置知识及要求说明 二、线程基础知识复习 三、CompletableFuture 四、说说Java"锁"事 8锁案例原理解释: 五、LockSupport与线程中断 六、 Java内存模型之JMM 七、volatile与JMM 八、CAS 九、原子操作类之18罗汉增强 十、聊聊ThreadLocal 十一、Java对…...

Spark09: Spark之checkpoint
一、checkpoint概述 checkpoint,是Spark提供的一个比较高级的功能。有时候,我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个transformation算子。而…...

《剑指offer》:数组部分
一、数组中重复的数字题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1…...

基于微信小程序图书馆座位预约管理系统
开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis本系统分微信小程序和管理后台两部分,项目采用…...
剑指 Offer Day1——栈与队列(简单)
本专栏将记录《剑指 Offer》的刷题,传送门:https://leetcode.cn/study-plan/lcof/。 目录剑指 Offer 09. 用两个栈实现队列剑指 Offer 30. 包含min函数的栈剑指 Offer 09. 用两个栈实现队列 原题链接:09. 用两个栈实现队列 class CQueue { pu…...

详解Python正则表达式中group与groups的用法
在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息。 group方法是re.MatchObject类中的一个函数,用于返回匹配对象的整个匹配结果或特定的分组匹配结果。而groups方法同样是re.MatchObject类中的函数&am…...

Spring面试重点(三)——AOP循环依赖
Spring面试重点 AOP 前置通知(Before):在⽬标⽅法运行之前运行;后置通知(After):在⽬标⽅法运行结束之后运行;返回通知(AfterReturning):在⽬标…...

计算机网络之HTTP04ECDHE握手解析
DH算法 离散读对数问题是DH算法的数学基础 (1)计算公钥 (2)交换公钥,并计算 对方公钥^我的私钥 mod p 离散对数的交换幂运算交换律使二者算出来的值一样,都为K k就是对称加密的秘钥 2. DHE算法 E&#…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...