[深度学习]搭建开发平台及Tensor基础

一、实验目的

1. 掌握Windows下PyTorch 深度学习环境的配置

2. 掌握一种PyTorch开发工具

3. 理解张量并掌握Tensor的常用操作(创建、调整形状、加、减、乘、除、取绝对值、比较操作、数理统计操作  

4. 掌握Tensor与Numpy的互相转换操作

5. 掌握Tensor 的降维和增维操作

6. 掌握Tensor 的裁剪、索引操作

7. 掌握cuda()函数

二、实验内容

1. 在Windows或Linux下配置PyTorch 深度学习环境

2. 掌握一种Deep Learning开发工具

3. 张量的创建、调整形状、加减乘除、取绝对值操作、比较、数理统计操作、与Numpy的互相转换、降维和增维、裁剪、索引,把Tensor 移到GPU上去。

三、主要实验步骤及结果

1. 要定义一个64位浮点型Tensor,其值是矩阵:[[1,2],[3,4],[5,6]],并输出结果。

源码:

import torchx=torch.DoubleTensor([[1,2],[3,4],[5,6]])print(x)

结果:

2. 创建一个张量a,元素全部是1,尺寸为2×3。并打印出来。

源码:

import torcha=torch.ones(2,3)print(a)

结果:

3. 创建一个张量b,元素全部是0,尺寸为2×3。并打印出来。

源码:

import torchb=torch.zeros(2,3)print(b)

结果:

4.创建一个张量c,对角线元素全部是1,尺寸为3×3。并打印出来。

源码:

import torchc=torch.eye(3,3)print(c)

结果:

5.创建一个张量d,随机生成的浮点数的取值满足均值为0、方差为1的正太分布, 尺寸为2×3。并打印出来。

源码:

import torchd=torch.randn(2,3)print(d)

结果:

6.创建一个张量e,长度为5的随机排列。并打印出来。

源码:

import torche=torch.randperm(5)print(e)

结果:

7.创建一个张量f,从1开始到7结束,步长为2。并打印出来。

源码:

import torchf=torch.arange(1,8,2)print(f)

结果:

8.要定义一个16位整型Tensor,其值是矩阵:[[1,2],[3,4],[5,6]] ,并输出结果。

源码:

import torchx=torch.tensor([[1,2],[3,4],[5,6]],dtype=torch.int16)print(x)

结果:

9.构造一个3x2矩阵,不初始化,并输出结果

源码:

import torchx=torch.empty(3,2)print(x)

结果:

10.构造一个3*2的随机初始化的矩阵,并输出结果

源码:

import torchx=torch.rand(3,2)print(x)

结果:

11. 构造一个矩阵全为 0,而且数据类型是 long,并输出结果

源码:

import torchx=torch.zeros(4,3,dtype=torch.long)print(x)

结果:

12.构造一个数据类型是 long的全0的3*2矩阵,并输出结果

源码:

import torchx=torch.zeros(3,2,dtype=torch.long)print(x)

结果:

13.构造一个值为[1.5, 2]的张量,并输出结果

源码:

import torchx=torch.tensor([1.5,2])print(x)

结果:

14. 根据给出的输入,得到输出,并记录。

输入:

import torch as t

c = t.Tensor(3,2)

print(c)

输出:

15. 根据给出的输入,得到输出,并记录。

输入:

import torch as t

d = t.Tensor(3,2)

e = t.Tensor(d.size( ))

print(e)

输出:

16.以下每个函数以size=2*3为例,写出输入及输出。

  1. torch.empty(size)返回形状为size的空tensor
  2. torch.zeros(size)全部是0的tensor
  3. torch.zeros_like(input)返回跟input的tensor一个size的全零tensor
  4. torch.ones(size)全部是1的tensor
  5. torch.ones_like(input)返回跟input的tensor一样size的全tensor
  6. torch.rand(size) [0,1)内的均匀分布随机数

输入:

import torch as tsize=(2,3)input=t.tensor([[1, 2, 3], [4, 5, 6]])a=t.empty(size)b=t.zeros(size)c=t.zeros_like(input)d=t.ones(size)e=t.ones_like(input)f=t.rand(size)print(a,'\n',b,'\n',c,'\n',d,'\n',e,'\n',f)

输出:

17.创建一个二阶张量,长度为8,元素为[0,1,2,3,4,5,6,7],将其改编成形状为2*4的张量。

源码:

import torchx=torch.tensor([0,1,2,3,4,5,6,7])y=x.view(2,4)print(y)

结果:

18. a = torch.Tensor([[2,2],[1,4]])

b = torch.Tensor([[3,5],[7,4]])

实现求a与b乘积的操作,并输出结果

源码:

import torcha=torch.tensor([[2,2],[1,4]])b=torch.tensor([[3,5],[7,4]])x=torch.matmul(a,b)print(x)

结果:

19.有两个张量a = [1, 2],b = [3, 4],比较两张量大小。

源码:

import torcha=torch.tensor([1,2])b=torch.tensor([3,4])if torch.all(torch.gt(a,b)):print("a>b")elif torch.all(torch.lt(a,b)):print("a<b")else:print("a=b")

结果:

20.求出张量 a =([2,8])的均值。

源码:

import torcha=torch.tensor([2,8],dtype=torch.float32)mean_a=torch.mean(a)print(mean_a)

结果:

21.计算Tensor:[-1.2027, -1.7687,  0.4412, -1.3856]的tan( )值

源码:

import torchx=torch.tensor([-1.2027,-1.7687,0.4412,-1.3856])y=torch.tan(x)print(y)

结果:

22. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.arange(4.)

print(torch.reshape(a, (2, 2)))

b = torch.tensor([[0, 1], [2, 3]])

print( torch.reshape(b, (-1,)))  #将二维张量b的形状改为一维张量,元素顺序不变 

输出:

23. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

x = torch.randn(3, 4)

print(x)

mask = x.ge(0.5)

print(mask)

print(torch.masked_select(x, mask)) # 根据掩码(大于等于0.5)选择张量中的对应元素并打印出来

输出:

24. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

x = torch.randn(2, 3)

print( x)

print(torch.cat((x, x, x), 0)) #将张量x沿着第0维方向进行拼接,即按照行方向进行拼接并打印拼接后的张量内容

输出:

25. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

print(torch.eye(3)) # 打印3*3的单位矩阵

输出:

26. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

print(torch.range(1, 4))

print(torch.range(1, 4, 0.5))  #打印从1到4的浮点数序列的张量,步长为0.5

输出:

27. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(4, 4)

print(a)

b = torch.randn(4)

print(b)

print(torch.div(a, b)) #对张量a和张量b进行逐元素的除法运算,并打印出结果张量

输出:

28. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

exp = torch.arange(1., 5.)

base = 2

print(torch.pow(base, exp)) # 计算并打印2的exp中各个元素对应的次方值

输出:

29. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(4)

print(a)

print(torch.round(a))  # 打印张量中的各个元素四舍五入最接近的整数值

输出:

30. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(4)

print(a)

print( torch.sigmoid(a))  #打印张量中每个元素通过Sigmoid激活函数转换后的结果

输出:

31. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.tensor([0.7, -1.2, 0., 2.3])

print(a)

print(torch.sign(a))  # 输出张量通过sign函数转换为其符号对应的数值

输出:

32. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(4)

print(a)

print(torch.sqrt(a))   # 输出张量中每个元素的开平方根

输出:

33. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(1, 3)

print(a)

print(torch.sum(a)) # 打印张量中所有元素的和

输出:

34. 写出下面程序的结果,并写出注释语句含义。

输入:

import torch

a = torch.randn(4)

print(a)

b = torch.randn(4)

print(b)

print(torch.max(a, b))  # 比较两个张量中对应位置的元素,并返回一个新的张量,其中新的张量中为相应位置的最大值,并打印结果

输出:

35. 写出以下输入的输出。

输入:

import torch

a = torch.zeros(2, 1, 2, 1, 2)

print("a =",a)

print("a.size( ) =",a.size( ))

b = torch.squeeze(a)

print("b =",b)

print("b.size( ) =",b.size( ))

c = torch.squeeze(a, 0)

print("c =",c)

print("c.size( ) =",c.size( ))

d = torch.unsqueeze(c, 1)

print("d =",d)

print("d.size( ) =",d.size( ))

输出:

36. 查资料,说明torch.mul( ) 和 torch.mm( ) 的区别,并输出以下程序结果。

输入:

import torch

a = torch.rand(1, 2)

b = torch.rand(1, 2)

c = torch.rand(2, 3)

print(torch.mul(a, b))  

print(torch.mm(a, c))   

print(torch.mul(a, c))  

输出:

使用torch.mul()函数计算的是两个形状相同的张量a和b的元素对应相乘的结果,但是张量a和c的形状不兼容,进行运算时会报错;使用torch.mm()计算矩阵乘法,要求第一个矩阵的列数等于第二个矩阵的行数。

四、实验总结

实验错误截图如下:

1.如下图,图中的错误为在调用pytorch的DoubleTensor函数时,不符合语法规范

 

2.如下图,在比较两个张量时,不能直接使用大于、小于或等于运算符。可以使用PyTorch提供的函数来进行逐元素的比较,使用torch.gt()、torch.lt()和torch.eq()函数分别进行大于、小于和等于的比较。

3.如下图,在计算张量均值时,输入的数据类型不是浮点数或复数会报错。代码中输入的张量 a 是一个整数类型的张量,我们需要将张量转换为浮点数类型,然后再计算均值。

4.如下图,报错的原因是在计算矩阵元素乘法时,两个矩阵的维度不匹配导致无法进行张量的计算。

 

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

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

相关文章

【Zephyr 系列 14】使用 MCUboot 实现 BLE OTA 升级机制:构建安全可靠的固件分发系统

🧠关键词:Zephyr、MCUboot、OTA 升级、BLE DFU、双分区、Bootloader、安全固件管理 📌面向读者:希望基于 Zephyr 为 BLE 设备加入安全 OTA 升级功能的开发者 📊预计字数:5200+ 字 🧭 前言:为什么你需要 OTA? 随着设备部署数量增多与产品生命周期延长,远程升级(…

App Search 和 Workplace Search 独立产品现已弃用

作者&#xff1a;来自 Elastic The Search Product Team App Search 和 Workplace Search 的核心功能已集成到 Elasticsearch 和 Kibana 中。 我们宣布在 9.0 版本中弃用 App Search 和 Workplace Search。 如果你是 Elastic 的客户&#xff0c;当前正在使用 App Search 和 Wo…

Spring Boot + OpenAI 构建基于RAG的智能问答系统

一、技术架构设计 1.1 系统架构图 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [问答处理服务层]├─▶ [知识库检索模块] ──▶ [向量数据库]└─▶ [OpenAI集成模块] ──▶ [OpenAI API]│▼ [结果组装与返回] 1.2 技术选型 组件技术栈版本要求…

Oracle实用参考(13)——Oracle for Linux物理DG环境搭建(2)

13.2. Oracle for Linux物理DG环境搭建 Oracle 数据库的DataGuard技术方案,业界也称为DG,其在数据库高可用、容灾及负载分离等方面,都有着非常广泛的应用,对此,前面相关章节已做过较为详尽的讲解,此处不再赘述。 需要说明的是, DG方案又分为物理DG和逻辑DG,两者的搭建…

【论文阅读29】区间预测CIPM(2025)

这篇论文主要研究的是滑坡位移的区间预测方法&#xff0c;提出了一种新型的预测模型&#xff0c;叫做复合区间预测模型&#xff08;CIPM&#xff09;&#xff0c;并以三峡库区的白家堡滑坡为案例进行了应用和验证。论文的核心内容和贡献包括&#xff1a; 背景与问题 滑坡位移预…

Linux 文件系统底层原理笔记:磁盘结构、ext2 文件系统与软硬链接解析

文章目录 一、理解硬件1.1 磁盘、服务器、机柜、机房1.2 磁盘物理结构1.3 磁盘的存储结构1.4 磁盘的逻辑结构1.4.1 理解过程1.4.2 真实过程 1.5 CHS && LBA地址 二、引入文件系统2.1 引入"块"概念2.2 引入"分区"概念2.3 引入"inode"概念…

75Qt窗口_Qt窗口概览

Qt 窗⼝ 是通过 QMainWindow类 来实现的。 QMainWindow 是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃ QWidget 类&#xff0c;并且提供了⼀个预定义的布局。 QMainWindow 包含 ⼀个菜单栏&#xff08;menu bar&#xff09;、多个⼯具栏(tool bars)、多个浮动窗⼝&#x…

Appium+python自动化(九)- 定位元素工具

简介 环境搭建好了&#xff0c;其他方面的知识也准备的差不多了&#xff0c;那么就开始下一步元素定位&#xff0c;元素定位主要介绍如何使用uiautomatorviewer&#xff0c;通过定位到页面上的元素&#xff0c;然后进行相应的点击等操作. 此外在介绍另一款工具&#xff1a;Insp…

apipost将token设置为环境变量

右上角 可以新增或者是修改当前的环境 环境变量增加一个token,云端值和本地值可以不用写 在返回token的接口里设置后执行操作&#xff0c;通常是登录的接口 右侧也有方法提示 //设置环境变量 apt.environment.set("token", response.json.data.token); 在需要传t…

【Docker 02】Docker 安装

&#x1f308; 一、各版本的平台支持情况 ⭐ 1. Server 版本 Server 版本的 Docker 就只有个命令行&#xff0c;没有界面。 Platformx86_64 / amd64arm64 / aarch64arm(32 - bit)s390xCentOs√√Debian√√√Fedora√√Raspbian√RHEL√SLES√Ubuntu√√√√Binaries√√√ …

青少年编程与数学 01-011 系统软件简介 08 Windows操作系统

青少年编程与数学 01-011 系统软件简介 08 Windows操作系统 1. Windows操作系统的起源与发展1.1 早期版本&#xff08;1985-1995&#xff09;1.2 Windows 9x系列&#xff08;1995-2000&#xff09;1.3 Windows NT系列&#xff08;1993-2001&#xff09;1.4 Windows XP及以后版…

微服务架构的性能优化:链路追踪与可观测性建设

&#x1f4cb; 目录 引言&#xff1a;微服务性能挑战微服务架构性能瓶颈分析可观测性体系概述链路追踪技术深度解析性能监控指标体系日志聚合与分析分布式追踪系统实现性能优化策略与实践自动化性能调优故障诊断与根因分析最佳实践与案例研究未来发展趋势 引言 随着微服务架…

ubuntu屏幕复制

在ubnuntu20中没有办法正常使用镜像功能,这里提供一下复制屏幕的操作. 使用xrandr查看所有的显示器情况 这里我发现自己的电脑没有办法直接设置分辨率,但是外接的显示器可以设置,从命令行来说就是设置: xrandr --output HDMI-0 --mode 1920x1080那怎么样才能将原生电脑屏幕换…

Android 线性布局中常见的冲突属性总结

1. gravity vs layout_gravity 冲突原因&#xff1a;两者作用对象不同&#xff0c;混用会导致行为异常。 区别&#xff1a; android:gravity&#xff1a;父容器的属性&#xff0c;控制子元素在容器内的对齐方式。android:layout_gravity&#xff1a;子元素的属性&#xff0c;控…

0x-4-Oracle 23 ai-sqlcl 25.1.1 独立安装-配置和优化

一、独立安装sqlcl 1. ​安装 Java 环境​ SQLcl 需要 Java 1.8.0_220 或更高版本&#xff0c; Oracle Linux9.6 上已经默认安装Oracle 23ai后Java 是11 lts版本 如果java jdk安装错误将遇上SQLcl困扰n多人的bug sql /nolog 错误&#xff1a;找不到或加载主类 oracle.dbto…

如何评价华为最新长焦专利技术?能否颠覆手机长焦摄影的目前限制?

击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 目前透露的消息来看是3.7倍和10倍&#xff01;&#xff01;&#xff01; 据悉&#xff0c;华为即将发布的Pura 80系列手机将率先采用这一革命性的专利技术。 华为的伸缩专利让镜头模组学会了&qu…

基于SpringBoot实现的大创管理系统设计与实现【源码+文档】

基于SpringBootVue实现的大创管理系统采用前后端分离架构方式&#xff0c;系统设计了管理员、学生、指导老师、院系管理员两种角色&#xff0c;系统实现了用户登录与注册、个人中心、学生管理、指导老师管理、院系管理员管理、优秀项目管理、项目类型管理、项目信息管理、项目申…

4-C#的不同窗口传值

C#的不同窗口传值 1.通过构造函数传值 this.Hide(); Form1 form01 new Form1(textBox2.Text); //Application.Run(form01); form01.Show();public Form1(string aaa) {InitializeComponent();label12.Text aaa; }2.全局类传值 namespace WindowsFormsApp1 {public class G…

CentOS 7 如何pip3安装pyaudio?

CentOS 7 如何pip3安装pyaudio&#xff1f; # 先将yum软件源改为阿里云镜像源 http://mirrors.aliyun.com/centos-vault/7.9.2009/ bash <(curl -sSL https://linuxmirrors.cn/main.sh) # 基于一键换源脚本&#xff0c;全部回车即可# pip3安装模块是从源码构建&#xff08;…

低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例

在能源行业数字化转型浪潮下&#xff0c;某大型能源集团通过鲸采云低代码平台&#xff0c;仅用3周时间就完成了采购订单管理系统的定制化搭建。本文将揭秘这一成功案例的实施路径与关键成效。 项目背景与挑战 该企业面临&#xff1a; 供应商分散&#xff1a;200供应商使用不同…