deep learning

谷歌在线notebook

一、基本数据类型与用法

1.torch.tensor(张量)

按照维度不同(中括号的对数),可以用torch.tensor创建scalar(标量)、vector(向量)、matrix(矩阵),

一般的,一维是标量,二维是向量,三维是矩阵,n维是张量(包含1~3维)

# code:

scalar = torch.tensor(7)

vector = torch.tensor([3, 4])

matrix = torch.tensor([[1, 2],

             [3, 4]])

print(scalar.ndim)

print(vector.ndim)

print(matrix.ndim)

print(scalar.shape)

print(vector.shape)

print(matrix.shape)

# out:

0

1

2

torch.Size([])

torch.Size([2])

torch.Size([2, 2])

2.random_tensor(随机张量)

随机张量在深度学习中经常使用,在为每个神经网络进行初始化赋值时,就是用随机张量矩阵为每个节点赋予一个初始值,用法为torch.rand,参数为张量矩阵形状,生成结果为一个随机数组成的张量矩阵。

# code:

random_tensor = torch.rand(3,4)

random_tensor

# out:

tensor([[0.3376, 0.6243, 0.1119, 0.2120],[0.5750, 0.4984, 0.5371, 0.4670],[0.0507, 0.3727, 0.0362, 0.0290]])

 3.torch.ones和torch.zeros

这两个方法分别用来创建内容全为1或全为0的张量矩阵,用法同rand类似。

# code:

zeros = torch.zeros(3,4)

zeros

# out:

tensor([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])

# code:

zeros = torch.ones(3,4)

zeros

# out:

tensor([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])

4.常用tensor属性

shape表示矩阵形状,ndim表示张量维度(中括号对数),dtype表示张量数据类型(默认为float32),其中shape属性获取结果与zeros.size()方法获取结果相同。

# code: 

zeros = torch.ones(3,4)

print(zeros.shape)

print(zeros.ndim)

print(zeros.dtype)

# out:

torch.Size([3, 4])

2

torch.float32

dtype可以在创建张量时指定,如tensor=torch.tensor([1,2,3],dtype=float16),它们指定了计算的精度;dtype常用类型包括float32(单精度)、float16(半精度)、float64(双精度)。 若要更改dtype,可以调用to()方法进行修改

device属性在创建张量时默认为cpu,若要采用gpu加速,将其设置为cuda。

tensor = torch.tensor([1,2,3], dtype=float64, device='cuda')

tensor.to(torch.float16)

5.torch.arange

创建一个从指定位置出发,到指定范围结束的张量,可以设置间隔。

# code:

rangeTensor = torch.arange(1, 20, 4)

rangeTensor

# out:

tensor([ 1,  5,  9, 13, 17])

6.torch.zeros_like与torch.ones_like

创建与指定张量相同形状的张量,内容分别为0和1,结果的dtype为int64

# code:

rangeTensor = torch.tensor([[1,2,3],

                                             [4,5,6]])

tensorLike = torch.ones_like(rangeTensor)

tensorLike

# out:

tensor([[1, 1, 1],[1, 1, 1]])

# code:

rangeTensor = torch.tensor([[1,2,3],

                                             [4,5,6]])

tensorLike = torch.zeros_like(rangeTensor)

tensorLike

# out:

tensor([[0, 0, 0],[0, 0, 0]])

7.张量与常数的运算

张量与常数的运算遵循广播机制,即张量会对所有元素进行相应运算。

运算有两种方式,一种是直接用python运算符,另一种是用torch提供的方法执行,但一般推荐直接使用运算符,因为二者结果相同,运算符操作更为直观。

# code: 

tensor = torch.tensor([4,6,8])

print(tensor+3)

print(tensor*3)

print(torch.add(tensor, 3))

print(torch.mul(tensor, 3))

# out:

tensor([ 7, 9, 11])

tensor([12, 18, 24])

tensor([ 7, 9, 11])

tensor([12, 18, 24])

8.张量与张量的运算

①矩阵元素运算

矩阵的加减乘除需要满足两矩阵形状相同,加减时对应位置元素相加减乘除。

# code:

tensor1 = torch.tensor([4,6,8])

tensor2 = torch.tensor([2,4,7])

tensor1 + tensor2

# out:

tensor([ 6, 10, 15])

②矩阵乘法

矩阵乘法又被称为“点积”,和矩阵元素相乘不同,其运算过程如下图:

 # code:

tensor1 = torch.tensor([[1, 2, 3],

             [4, 5, 6]])

tensor2 = torch.tensor([[1, 4, 7],

             [2, 5, 8],

             [2, 3, 4]])

torch.matmul(tensor1, tensor2)

# out:

tensor([[11, 23, 35],[26, 59, 92]])

需要注意的一点是不是任何矩阵都能直接相乘,前提条件是第一个矩阵的列数要等于第二个矩阵的行数,如(2, 3)的矩阵可与(3, 1)的矩阵进行点积运算。

事实上,使用tensor运算就是因为矩阵相乘在计算机上的运算效率要高于循环运算数千倍,正因如此,也造就了当今各大框架都以tensor为基本运算单元的现状。 以下是一段速度对比代码:

# code:

import torch

import time

import numpy as np

# 定义矩阵大小

matrix_size = 100

# 生成两个随机矩阵

tensor1 = torch.rand(matrix_size, matrix_size)

tensor2 = torch.rand(matrix_size, matrix_size)

# 使用张量的点积运算

start_time = time.time()

result_tensor = torch.matmul(tensor1, tensor2)

end_time = time.time()

tensor_time = end_time - start_time

# 使用传统的循环运算计算点积

start_time = time.time()

result_loop = torch.zeros((matrix_size, matrix_size))

for i in range(matrix_size):

    for j in range(matrix_size):

        result_loop[i, j] = sum(tensor1[i, :] * tensor2[:, j])

end_time = time.time()

loop_time = end_time - start_time

# 输出执行时间

print("张量点积运算时间:", tensor_time)

print("传统循环运算时间:", loop_time)

# out:

张量点积运算时间: 0.0005884170532226562

传统循环运算时间: 5.478101968765259

剩余部分正在学习中......

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

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

相关文章

七星创客新零售系统:颠覆性商业模式的崛起

大家好,我是微三云周丽,今天给大家分析当下市场比较火爆的商业模式! 小编今天跟大伙们分享什么是七星创客新零售系统? 随着经济的快速发展和科技的不断进步,商业模式的革新成为了企业发展的关键。在这个新旧动能转换、…

sudo的设置

sudo指令就是提高你的用户权限,用来完成root可以完成的工作,但是有一个前提,就是被root添加到信任名单中,接下来我们要讲解如何在root中添加用户到信任名单中。 在root中输入指令: 即可到达添加信用列表的位置&#x…

【漏洞复现】卡车卫星定位系统 /user/create接口处存在未授权密码重置漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

Linux:进程与计划任务

文章目录 Linux:进程与计划任务一、进程1、进程是什么2、进程状态 二、列出进程命令1、查看静态的进程统计信息——“ps”Play1:“ps aux”Play2:ps -elf 2、查看静态的进程统计信息——“top”段首解析进程信息区解释 三、运行与终止进程3.1、运行进程3…

【网络安全】对称加密、非对称加密以及密钥分配

目录 1、对称加密 2、非对称加密 3、如何分配对称密钥? 4、如何分配非对称密钥? 1、对称加密 所谓对称加密,就是指加密密钥与解密密钥都使用相同的密钥。如下图所示,通信双方使用的就是对称加密密钥。//代表:DES和…

军工单位安全内网文件导出,怎样做到严密的安全管控?

军工单位是指承担国家下达的军事装备、产品研制、生产计划任务的企、事业单位,主要包括电子工业部、航空工业总公司、航天工业总公司、兵器工业总公司、核工业总公司、船舶工业总公司、中国工程物理研究院及各省国防工业办公室等。 军工单位的特点主要体现在以下几个…

多目标应用:基于非支配排序粒子群优化算法NSPSO求解无人机三维路径规划(MATLAB代码)

一、无人机多目标优化模型 无人机三维路径规划是无人机在执行任务过程中的非常关键的环节,无人机三维路径规划的主要目的是在满足任务需求和自主飞行约束的基础上,计算出发点和目标点之间的最佳航路。 1.1路径成本 无人机三维路径规划的首要目标是寻找…

学习笔记记录ensp中防火墙配置(trust,unstrus,dmz 资源下载可用)

实验目的,通过配置防火墙控制相互之间的访问,拓扑图如下 资源已上传,注意lsw1和ar2的路由表到各个网段的路由表配置,通过防火墙来控制各个区域能否访问成功。 防火墙通过cloud2链接,方便登录网页配置防火墙策略。防火…

js的算法-交换排序(快速排序)

快速排序 基本思想 快速排序的基本思想是基于分治法的:在待排序表L【1...n】中任意取一个元素p 作为枢轴(或基准,通常取首元素)。通过一趟排序将待排序表划分为独立的两部分L【1...k-1】和L【k1...n】;这样的话,L【1…

数据结构 第六章 树与二叉树(二)

🚀 【考纲要求】二叉树的定义及其主要特征;二叉树的顺序存储和链式存储 二、二叉树的概念 1)什么是二叉树? 对于二叉树来说,它是一个特殊的树形结构,其每个节点都最多有两个孩子(即节点的度最…

Redis入门到通关之Redis数据结构-Hash篇

文章目录 ☃️ 概述☃️底层实现☃️源码☃️其他 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后…

ESP-IDF下载与安装完整流程

本文主要看参考官网说明,如下: Windows 平台工具链的标准设置 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com) 一、概述 ESP-IDF需要安装一些必备工具,才能围绕ESP32构建固件,包括: PythonGit交叉编译…

圈子交友系统话题设置-免费圈子社区论坛交友系统-圈子交友系统功能介绍-APP小程序H5多端源码交付!

1. 圈子的独特创造与精心管理 源码赋予用户创造独特圈子的能力,为志同道合的人们打造一个分享兴趣、交流见解的平台。每个圈子都可以个性化定制主题、标签和规则,以确保圈子具备个性特点和强烈的社群感。作为圈子的创建者,您将享有自由编辑资…

LabVIEW专栏八、类

该章目的是可以开发仪器类。 一、类的概述 一般来说类有三大特性,封装,继承和多态。 在实际项目中,最主要是继承和多态,要搞清楚这两者的概念和在LabVIEW中是怎样应用的。在LabVIEW中,面向对象编程用到的就是LabVIE…

基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2013B 3.部分核心程序 .............................................................................. %我们这里…

利用大模型与AI Agent,实现企业数据智能分析

导语:大模型爆火之后,很多企业也用大模型做了相关探索和实践,我们发现大模型解决单点问题时效果更好。但同时会产生安全、幻想等相关问题。今天从传统数据分析的痛点,到大模型智能分析的建设方式,并结合相关实践案例&a…

OpenHarmony实战开发-合理运行后台任务

简介 设备返回主界面、锁屏、应用切换等操作会使应用退至后台。为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控,包括进程挂起和进程终止。为了保障后台音乐播放、日历提醒等功能的正常使用,系统提供了受规范约束…

安全AI未来 | C3安全大会 · 2024,数据驱动 AI原生

数字为时代变革注入动力,AI为重塑社会文明带来原力。数智浪潮中,我们见证着时代跃迁的巨变,面临着适变、应变、驭变的挑战。 数字驱动、AI原生。数字的流动不仅承载着信息,更将激活未来的无限价值;AI,不…

unity cinemachine相机 (案例 跟随角色移动)

安装相机包 打开包管理工具 在 unity registry 搜索cinemachine 会在maincamera中生成一个组件cinemachineBrain 只能通过虚拟相机操控 主相机 虚拟相机的参数 案例 1.固定相机效果 位置 在固定的地方 默认的模式 2.相机跟随人物效果 焦距设置 20 跟随设置 把playere…

【Android】 四大组件详解之广播接收器、内容提供器

目录 前言广播机制简介系统广播动态注册实现监听网络变化静态注册实现开机自启动 自定义广播发送标准广播发送有序广播 本地广播 内容提供器简介运行时权限访问其他程序中的数据ContentResolver的基本用法读取系统联系人 创建自己的内容提供器创建内容提供器的步骤 跨程序数据共…