首页 > 其他分享 >Pytorch实践学习笔记一(附可运行详细代码实例)

Pytorch实践学习笔记一(附可运行详细代码实例)

时间:2024-03-17 13:31:05浏览次数:21  
标签:附可 like 10 torch 张量 Pytorch 实例 print type

一、Pytorch的诞生

        2017 年 1 月,FAIR(Facebook AI Research)发布了 PyTorch。PyTorch 是在 Torch 基础上用 python 语言重新打造的一款深度学习框架。Torch 是采用 Lua 语言为接口的机器学习框架,但是因为 Lua 语言较为小众,导致 Torch 学习成本高,因此知名度不高。

二、Pytorch实现模型训练的 5 大要素 

1、数据:包括数据读取,数据清洗,进行数据划分和数据预处理,比如读取图片如何预处理及数据增强。
2、模型:包括构建模型模块,组织复杂网络,初始化网络参数,定义网络层。
3、损失函数:包括创建损失函数,设置损失函数超参数,根据不同任务选择合适的损失函数。
4、优化器:包括根据梯度使用某种优化器更新参数,管理模型参数,管理多个参数组实现不同学习率,调整学习率。
5、迭代训练:组织上面 4 个模块进行反复训练。包括观察训练效果,绘制 Loss/ Accuracy 曲线,用 TensorBoard 进行可视化分析。

三、数据类型

pytorch是一个计算库,也有人说是深度学习库,那么计算库呢,肯定都是有自己的数据类型的。
另外pytorch都是围绕Tensors (张量)来进行计算的,Tensors 类似于 NumPy 的 ndarrays ,同时 Tensors 可以使用 GPU 进行计算。ndarrays 是不可以的,且只能存储在cpu中,但是Tensor可以,Tensor其实就是用来进行各种计算的数据结构,存储数据,且有各种各样的操作,增删改查之类的。pytorch其实就是一个功能接口,我们都需要从最基本的类开始设计,pytorch的每一个数据类型其实就是一个类,这个类会定义他的一些基本的数据,定义他的一些函数操作,比如乘法、加法、减法、乘法、梯度更新。所以,我们看待pytorch的数据类型的时候,可以从类的角度去看待它。

四、通过pytorch的函数生成数据类型

1、torch.randn(),返回一个包含了从标准正态分布中抽取的一组随机数的张量,函数返回FloatTensor的张量。

import torch
print(torch.randn(2,3))
print(torch.randn(2,3).type())

输出结果:

运行时可能会出现AttributeError: partially initialized module 'torch' has no attribute 'randn' (most likely due to a circular import)的报错,这是因为文件名与库名冲突,也就是说你的文件名可能设置为了torch.py,此时把文件名改掉就可以了。

2、torch.rand(),返回的是均匀分布,区间为(0,1),而randn是标准正态分布(均值为0,方差为1,即高斯白噪声)。

import torch
print(torch.rand(2,3))
print(torch.rand(2,3).type())

3、torch.eye(),返回一个二维张量,可用来生成单位矩阵。

import torch
print(torch.eye(2,3))
print(torch.eye(2,3).type())

4、torch.from_numpy(), 将numpy.ndarray转换为Tensor。此函数有很多限制。

import torch
import os
import numpy  as np

a=np.random.randn(2,3)

tor=torch.from_numpy(a)
print(tor)
print(tor.type())

注意此时返回的是DoubleTensor类型。

5、torch.linspace(start,end,step) ,返回一个一维张量,设置一个起点,一个终点,再设置一个间隔,就会按照设置的间隔从起点到终点返回数据。返回数据类型是FloatTensor。注意,step只能是整数,start 和end可以随便设置,

print(torch.linspace(3,5,2))
print(torch.linspace(3,5,2).type())

此时返回的是FloatTentor类型。

6、torch.logspace(),返回一个一维张量,设置一个起点,一个终点,还需要设置一个返回元素数量,会按等间隔返回区间内所需数量的元素。也可以对数据进行按对数处理。

print(torch.logspace(3,5,10))
print(torch.logspace(3,5,10).type())
#以5为底对数据进行对数处理,默认为10
print(torch.logspace(3,5,10,5))
print(torch.logspace(3,5,10,5).type())

 从10的3次开始到10的5次结束,默认以10为底对数据进行数据处理。

7、torch.ones(),返回一个全为1的张量

print(torch.ones(10))
print(torch.ones(10).type())

8、torch.randperm(),返回一个随机的整数排列,所以只能传入整数n,然后排列的元素小于n。

print(torch.randperm(10))
print(torch.randperm(10).type())

9、torch.arange(),这个也是返回一个一维张量,他的用法跟logspace类似,但是他没有底数,底数一直是10。

print(torch.arange(5))
print(torch.arange(2,5))
print(torch.arange(2,5,2))
print(torch.arange(2,5,0.5))
print(torch.arange(5).type())
print(torch.arange(2,5,0.5).type())

10、torch.zeros(),跟ones类似,返回值全为0。

print(torch.zeros(10))
print(torch.zeros(10).type())

11、torch.zeros_like(),此函数根据给定的一个张量生成与其维度一样的一个全0的张量。它可以生成任意维度。

a=torch.eye(2,3)
b=torch.ones(12)

print(torch.zeros_like(a))
print(torch.zeros_like(b))
print(torch.zeros_like(a).type())

12、torch.empty_like(),用法与zeros_like类似,它生成的张量是随机的。

a=torch.eye(2,3)
b=torch.ones(12)

print(torch.empty_like(a))
print(torch.empty_like(b))
print(torch.empty_like(a).type())

13、torch.full(),传入一个维度s,再传入一个值v,会生成一个维度为s,值全为b的张量,

print(torch.full((2,5),10))
print(torch.full((2,5),10).type())

14、torch.full_like()

print(torch.full((3,4),5))
print(torch.full_like(torch.full((3,4),5),6))

15、torch.as_tensor(),对于列表,元组,ndarray来说,这个过渡函数可以直接实现它们之间的转化。

import torch
import os
import numpy  as np

a1=[1,2,3]
b=(1,2,3)
a2=[[1,2,3],[1,2,3]]
c=np.array([1,2,3])
print(torch.as_tensor(a1))
print(torch.as_tensor(b))
print(torch.as_tensor(a2))
print(torch.as_tensor(c))

print(torch.as_tensor(a1).type())

16、torch.rand_like(),返回区间为(0,1)之间的随机数。

a=torch.eye(2,3)
b=torch.ones(6)
print(torch.rand_like(a))
print(torch.rand_like(b))
print(torch.rand_like(a).type())

17、torch.randint(),返回一个填充了随机整数的张量,我们需要设置随机整数的范围和张量维度。

print(torch.randint(1,10,size=(12,)))
print(torch.randint(1,10,size=(2,3)))
print(torch.randint(1,10,size=(2,3)).type())

18、torch.randint_like(),根据给定的一个张量生成与其维度一样的张量。它可以生成任意维度。

a=torch.eye(2,3)
b=torch.ones(6)
print(torch.randint_like(a,1,10))
print(torch.randint_like(b,1,10))
print(torch.randint_like(a,1,10).type())

19、torch.randn_like()

a=torch.eye(2,3)
b=torch.ones(6)
print(torch.randn_like(a))
print(torch.randn_like(b))
print(torch.randn_like(a).type())

20、通过tensor函数生成数据类型,可以直接指定我们生成的数据类型。


a = torch.tensor([3, 2], dtype=torch.float32) 
print(a.type())
a = torch.tensor([3, 2], dtype=torch.int32) 
print(a.type())
a = torch.tensor([3, 2], dtype=torch.int64) 
print(a.type())
a = torch.tensor([3, 2], dtype=torch.float64) 
print(a.type())

五、Pytorch的各种数据类型的属性

1、torch.type()查看数据类型

a=torch.randn(2,3)
print(a.type())
#进行类型转换,重新开辟一段内存
a = a.type(torch.int64)
print(a.type())

2、torch.size()查看数据形状

a=torch.randn(2,3)
print(a.size())
a=torch.randn(2,)
print(a.size())
a=torch.randn(6)
print(a.size())

标签:附可,like,10,torch,张量,Pytorch,实例,print,type
From: https://blog.csdn.net/m0_73776435/article/details/136768715

相关文章

  • ADI小课堂丨今天咱们实例分析一款精密Σ-Δ型ADC
    AD717x是ADI最新系列的精密Σ-Δ型ADC。该ADC系列是市场上第一个提供真正24位无噪声输出的转换器系列。AD717x器件可使对噪声异常敏感的仪器仪表电路的动态范围最大化,支持降低或消除信号调理级中的前置放大器增益。这些器件还能高速运行,提供比以前更短的建立时间。由此可缩短......
  • 浅浅了解一下图像分割(pytorch框架)
    1、图像分割是什么         图像分割分类是对图像中属于特定类别的像素进行分类的过程,因此图像分割可以认为是按像素进行分类的问题。        传统的图像分割算法均是基于灰度值的不连续和相似的性质。而基于深度学习的图像分割技术则是利用卷积神经网络,......
  • 机器学习 - PyTorch里的aggregation
    在PyTorch里,可以在tensor里找到min,max,mean,sum等aggregation值。直接上代码importtorchx=torch.arange(0,100,10)print(x)print(f"Minimum:{x.min()}")print(f"Minimum:{torch.min(x)}")print(f"Maximum:{x.max()}")print(f"Maxi......
  • 一篇文章带你掌握Flex 布局:语法、实例
    目录前言语法一、Flex布局是什么?二、基本概念三、容器的属性(应用在父元素上)1.**`flex-direction`**:2.**`flex-wrap`**:3.**`flex-flow`**:4.**`justify-content`**:5.**`align-items`**:6.**`align-content`**:四、项目的属性(应用在子元素上)1.**`order`**:2.**`flex-......
  • C++模板的显式实例化
    C++模板前面讲到的模板的实例化是在调用函数或者创建对象时由编译器自动完成的,不需要程序员引导,因此称为隐式实例化。相对应的,我们也可以通过代码明确地告诉编译器需要针对哪个类型进行实例化,这称为显式实例化。编译器在实例化的过程中需要知道模板的所有细节:对于函数模板,也就是......
  • C++模板的实例化
    C++模板模板并不是真正的函数或类,它仅仅是编译器用来生成函数或类的一张“图纸”。模板不会占用内存,最终生成的函数或者类才会占用内存。由模板生成函数或类的过程叫做模板的实例化,相应地,针对某个类型生成的特定版本的函数或类叫做模板的一个实例。在学习模板以前,如果想针对不同......
  • nodejs打包问题解决实例
    node命令集合npmsetregistryhttps://registry.npm.taobao.org/npmconfigsetregistryhttps://registry.npmjs.org/npmconfigsetsass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/npmgetregistry //npm安装包的提示操作目录权限不足npmconfigsetu......
  • 基于EP4CE6F17C8的FPGA数码管动态显示实例
    一、电路模块1、数码管开发板板载了6个数码管,全部为共阳型,原理图如下图所示,段码端引脚为DIG[0]~DIG[7]共8位(包含小数点),位选端引脚为SEL[0]~SEL[5]共6位。端口均为低电平有效。其实物图如下所示。数码管引脚分配见下表。2、时钟晶振开发板板载了一个50MHz的有源晶振,为系统......
  • pytorch CV入门 - 汇总
    初次编辑:2024/2/14;最后编辑:2024/3/9参考网站-微软教程:https://learn.microsoft.com/en-us/training/modules/intro-computer-vision-pytorch更多的内容可以参考本作者其他专栏:Pytorch基础:https://blog.csdn.net/qq_33345365/category_12591348.htmlPytorchNLP基础:https......
  • Pytorch基础-汇总
    本教程翻译自微软教程:https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/初次编辑:2024/3/1;最后编辑:2024/3/4本教程包含以下内容:介绍pytorch基础和张量操作介绍数据集介绍归一化介绍构建模型层的基本操作介绍自动微分相关知识介绍优化循环(optimiz......