当前位置: 首页 > backend >正文

pytorch的介绍以及张量的创建

一.前言

本节我们先来介绍一下pytorch以及一些小知识


世界科技巨头公司的特点分析​

公司核心特点关键技术贡献
​Google​持续开源+论文驱动,搜索霸主地位- 2003 Hadoop(大数据)
- 2014 TensorFlow(AI框架)
- 2017 Transformer
- 2018 BERT
​Meta​工具导向型创新,低调但实用- Hive(大数据)
- FastText(NLP)
- PyTorch(动态图框架)
​微软​传统IT巨头转型成功,通过投资逆袭- 投资OpenAI实现AI时代逆转
​BATB​中国科技企业快速追赶,AI领域差距缩小- 百度(PaddlePaddle)、阿里、腾讯、字节跳动

​补充说明​​:

  • Google的"被OpenAI压制"主要指2023年后在生成式AI领域的竞争态势。
  • Meta的PyTorch已成为学术界主流(2024年arXiv论文占比超80%)。

主流深度学习框架对比​

框架特点版本演进适用场景
​TensorFlow​静态图→动态图转型,企业级支持强1.x(已淘汰)→ 2.x(主流)工业部署、移动端
​PyTorch​动态图设计,开发者友好1.3-1.10(稳定)→ 2.1+(新特性)学术研究、快速原型开发
​PaddlePaddle​中文文档完善,与PyTorch高度兼容兼容PyTorch API国内工业场景
​Caffe​专注CV,配置复杂已逐渐边缘化学术研究(历史项目)

​关键结论​​:

  • PyTorch已成为GitHub星标数最多的框架(2024年超60k stars)。
  • PaddlePaddle迁移成本极低,适合中文开发者。

Python深度学习环境配置指南​

​推荐流程​​:

  1. ​安装Anaconda​
    # 下载后直接运行安装包(默认勾选添加PATH)
  2. ​创建虚拟环境​
    conda create -n dl_env python=3.10  # 推荐3.10+版本
  3. ​环境管理​
    conda activate dl_env      # 激活
    conda deactivate           # 退出
  4. ​包安装技巧​
    • 优先使用conda install解决依赖冲突
    • 示例:
      pip install torch==2.3.0 --extra-index-url https://download.pytorch.org/whl/cu118  # 指定CUDA版本

​避坑提示​​:

  • 避免混用condapip安装同一包
  • 虚拟环境与VMware无关(纯Python隔离)

PyTorch数据精度详解​

​默认规则​​:

数据类型默认值显式声明示例
整型torch.int64tensor = torch.tensor([1,2], dtype=torch.int32)
浮点型torch.float32tensor = torch.tensor([1.0,2.0], dtype=torch.float16)

​精度选择建议​​:

  • ​训练阶段​​:必须使用float32(数值稳定性)
  • ​推理部署​​:可尝试float16/int8(节省显存)
  • ​特殊场景​​:int64用于索引/标签

计算机随机数本质​

​技术原理​​:

import random
random.seed(42)  # 设置种子可复现"随机"结果
print(random.random())  # 伪随机数生成

​关键特性​​:

  1. ​确定性算法​​:基于梅森旋转算法等数学公式
  2. ​种子依赖​​:相同种子→相同随机序列
  3. ​应用场景​​:
    • 游戏/模拟(可复现性重要)
    • 加密领域禁用伪随机数(需硬件熵源)

​扩展知识​​:

  • 真随机数需依赖物理现象(如放射性衰变、热噪声)
  • Linux系统通过/dev/random采集硬件熵

以上内容已整合技术细节与行业现状,如需进一步探讨某个方向(如PyTorch 2.x新特性或框架性能对比),可提供更深入的分析。

PyTorch 是⼀个 Python 深度学习框架,它将数据封装成张量(Tensor)来进⾏运算。PyTorch 中的张量就 是元素为同⼀种数据类型的多维矩阵。在 PyTorch 中,张量以 "类" 的形式封装起来,对张量的⼀些运算、 处理的⽅法被封装在类中。

二.张量的基本创建

1. torch.tensor 根据指定数据创建张量

2. torch.Tensor 根据形状创建张量, 其也可⽤来创建指定数据的张量

3. torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量

import torch
import numpy as np
import random# 1. 根据已有数据创建张量
def test01():# 1. 创建张量标量data = torch.tensor(10)print(data)# 2. numpy 数组, 由于 data 为 float64, 下⾯代码也使⽤该类型data = np.random.randn(2, 3)data = torch.tensor(data)print(data)# 3. 列表, 下⾯代码使⽤默认元素类型 float32data = [[10., 20., 30.], [40., 50., 60.]]data = torch.tensor(data)print(data)# 2. 创建指定形状的张量
def test02():# 1. 创建2⾏3列的张量, 默认 dtype 为 float32data = torch.Tensor(2, 3)print(data)# 2. 注意: 如果传递列表, 则创建包含指定元素的张量data = torch.Tensor([10])print(data)data = torch.Tensor([10, 20])print(data)# 3. 使⽤具体类型的张量
def test03():# 1. 创建2⾏3列, dtype 为 int32 的张量data = torch.IntTensor(2, 3)print(data)# 2. 注意: 如果传递的元素类型不正确, 则会进⾏类型转换data = torch.IntTensor([2.5, 3.3])print(data)# 3. 其他的类型data = torch.ShortTensor()  # int16data = torch.LongTensor()# int64data = torch.FloatTensor()  # float32data = torch.DoubleTensor() # float64
if __name__ == '__main__':test02()

三.创建线性和随机张量 

1. torch.arange 和 torch.linspace 创建线性张量

2. torch.random.init_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)# 2. 在指定区间按照元素个数⽣成data = torch.linspace(0, 11, 10)print(data)# 2. 创建随机张量
def test02():# 1. 创建随机张量data = torch.randn(2, 3)  # 创建2⾏3列张量print(data)# 2. 随机数种⼦设置print('随机数种⼦:', torch.random.initial_seed())torch.random.manual_seed(100)print('随机数种⼦:', torch.random.initial_seed())if __name__ == '__main__':test02()

四.创建01张量 

1. torch.ones 和 torch.ones_like 创建全1张量

2. torch.zeros 和 torch.zeros_like 创建全0张量

3. torch.full 和 torch.full_like 创建全为指定值张量 

import torch# 1. 创建全0张量
def test01():# 1. 创建指定形状全0张量data = torch.zeros(2, 3)print(data)# 2. 根据张量形状创建全0张量data = torch.zeros_like(data)print(data)# 2. 创建全1张量
def test02():# 1. 创建指定形状全0张量data = torch.ones(2, 3)print(data)# 2. 根据张量形状创建全0张量data = torch.ones_like(data)print(data)# 3. 创建全为指定值的张量def test03():# 1. 创建指定形状指定值的张量data = torch.full([2, 3], 10)print(data)# 2. 根据张量形状创建指定值的张量data = torch.full_like(data, 20)print(data)if __name__ == '__main__':test01()test02()test03()

五.张量元素类型转换 

1. tensor.type(torch.DoubleTensor)

2. torch.double() 

import torchdef test():data = torch.full([2, 3], 10)print(data.dtype)# 将 data 元素类型转换为 float64 类型# 1. 第⼀种⽅法data = data.type(torch.DoubleTensor)print(data.dtype)# 转换为其他类型# data = data.type(torch.ShortTensor)# data = data.type(torch.IntTensor)# data = data.type(torch.LongTensor)# data = data.type(torch.FloatTensor)# 2. 第⼆种⽅法data = data.double()print(data.dtype)# 转换为其他类型# data = data.short()# data = data.int()# data = data.long()# data = data.float()if __name__ == '__main__':test()

六.总结 

 在本⼩节中,我们主要学习了以下内容:

        1. 创建张量的⽅式

                1. torch.tensor 根据指定数据创建张量

                2. torch.Tensor 根据形状创建张量, 其也可⽤来创建指定数据的张量

                3. torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量

         2. 创建线性和随机张量

                1. torch.arange 和 torch.linspace 创建线性张量

                2. torch.random.init_seed 和 torch.random.manual_seed 随机种⼦设置

                3. torch.randn 创建随机张量

        3. 创建01张量

                1. torch.ones 和 torch.ones_like 创建全1张量

                2. torch.zeros 和 torch.zeros_like 创建全0张量

                3. torch.full 和 torch.full_like 创建全为指定值张量

        4. 张量元素类型转换

                1. tensor.type(torch.DoubleTensor)

                2. torch.double()

http://www.xdnf.cn/news/15193.html

相关文章:

  • css——width: fit-content 宽度、自适应
  • Express + @vladmandic/face-api + mySql 实现人脸识别
  • 深度学习篇---松科TPU部署代码分析
  • excel如何只保留前几行
  • JAVA ---Excel高效导入(去重1000万数据对比)
  • 【Qt 学习之路】Qt Android开发环境搭建:Ubuntu的Vmware虚拟机中的踩坑实录
  • 国产AI linux 桌面安装详解 (deepin 深度)
  • MinIO配置项速查表【五】
  • Pandas:数据变形
  • 零基础入门指南:华为数通认证体系详解
  • 从0开始学习R语言--Day44--LR检验
  • Android simpleperf生成火焰图
  • 炎热工厂救援:算法打造安全壁垒
  • MS1826+MS9332 4K@30Hz HD4×2视频分割器
  • ## SQLITE:多表(子母表)联合查询【DA_Project笔记】
  • 如何将 iPhone 文件传到 Mac?
  • Python七彩花朵
  • 4万亿英伟达,凭什么?
  • 安全监测预警平台的应用场景
  • Linux 下使用 VS Code 远程 GDB 调试 ARM 程序
  • 探索飞算 JavaAI 进阶:解锁高效Java开发的新维度
  • Selenium 自动化实战技巧【selenium】
  • springboot生成pdf方案之dot/html/图片转pdf三种方式
  • PDF 转图助手 PDF2JPG 绿色版:免安装直接用,急处理文件的救急小天使
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第九篇(排名不分先后)】
  • GPT和MBR分区
  • 云蝠智能 VoiceAgent重构企业呼入场景服务范式
  • 重学前端004 --- html 表单
  • 从二维到三维:数字孪生如何重塑UI前端设计
  • 【Git】git的回退功能