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

一、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 npa=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 npa1=[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())

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

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

相关文章

Linux下的多线程编程:原理、工具及应用(3)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Flower of Life—陽花 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶️ ☰ …

基于VJ算法(Viola-Jones algorithm)的人面定位算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

【解决】Github Pages搭建的网页访问加载缓慢

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 文章目录 一、CDN技术简介二、基于Cloudflare平台使用CDN服务(一)添加网站(二&#xff09…

MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!

目录 前言 什么是 Python MechanicalSoup 库? 核心功能 使用方法 1. 安装 MechanicalSoup 库 2. 创建 MechanicalSoup 客户端 3. 打开网页并与之交互 实际应用场景 1. 网页自动化测试 2. 网络爬虫与数据提取 3. 网页自动化操作 4. 自动化填写和提交多个表单 5.…

facebook个人广告账户充值方式有哪些?看这一篇就够了

可以使用虚拟信用卡进行充值,也可以使用虚拟卡绑定paypal进行充值 点击获取虚拟卡 开卡步骤如下图 Facebook如何添加支付方式 1.前往支付设置。 2.在支付方式版块,点击添加支付方式。 3.选择要添加的支付方式,填写相关信息,然…

【JS】html字符转义

需求 将html转为字符串将html字符串转义&#xff0c;比如<div>转为<div> 码 /*** html标签字符转义* param {Stirng} str 要转换的html字符* returns String 返回转义的html字符串*/ const elToStr str > str.replaceAll(<, <).replaceAll(>, >)…

15届蓝桥杯第三期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_奇数次数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t2_台阶方案&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t3_约数个数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t4_最…

详解MySQL的MVCC(ReadView部分解析C++源码)

文章目录 1. 什么是MVCC2. MVCC核心组成&#xff08;三大件&#xff09;2.1 MVCC为什么需要三大件 3. 隐藏字段4. undo log4.1 模拟版本链数据形成过程 5. Read View5.1 m_ids5.2 m_creator_trx_id5.3 m_low_limit_id5.4 m_up_limit_id5.5 可见性分析算法 6. MVCC流程模拟6.1 R…

flutter环境搭建实践

Dart Dart 是一种客户端和服务器端的编程语言&#xff0c;最早由 Google 提出。它被设计用于构建高性能、高度可伸缩和可靠的应用程序。Dart 可以编译成本地代码或者在虚拟机中直接运行。在移动应用开发中&#xff0c;Dart 主要用于开发 Flutter 应用。 Flutter 和 Dart 的关…

二叉平衡树和红黑树的代码实现(红黑树以后补充,目前代码也没怎么明白)

二叉平衡树 二叉平衡树节点定义 template<class K , class V> struct AVLTreeNode {AVLTreeNode<K, V>* _left;AVLTreeNode<K, V>* _right;AVLTreeNode<K, V>* _parent;pair<K, V> _kv;int _bf; //balance factorAVLTreeNode(const pair<K,…

ttkbootstrap界面美化系列之简介(一)

一&#xff1a;前言 相信很多同学用Python进行界面设计第一个用到的就是Tkinter&#xff0c;Tkinter是Python的一个标准接口&#xff0c;用于创建GUI&#xff08;图形用户界面&#xff09;应用程序。它是Tcl/Tk的封装&#xff0c;Tkinter的名称来源于Tk技术工具包(Tool…

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析&#xff1a;未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…

亚马逊云科技Glue

Glue 最重要的部分&#xff0c; ETL&#xff1a;用于从 A 点&#xff08;我们的源数据&#xff09;提取、转换和加载数据到 B 点&#xff08;目标文件或数据存储库&#xff09;。 AWS Glue 会为您执行大量此类工作。 转换通常是更繁重的工作&#xff0c;需要从各种来源进行组合…

QML 添加扩展插件QQmlExtensionPlugin

一.添加QQmlExtensionPlugin方式步骤 目的&#xff1a;界面跨软件复用。 项目目录结构如下图&#xff1a; 1.首先&#xff0c;创建一个继承自QQmlExtensionPlugin的类&#xff0c;例如MyPlugin。在这个类中&#xff0c;实现registerTypes()和initializeEngine()方法。 #ifndef …

Transformer self-attention源码及原理理解

自注意力计算公式&#xff1a; 在公式(1)中Q(query)是输入一个序列中的一个token&#xff0c;K(key)代表序列中所有token的特征。 可以得到当前token与序列中其他token的相关性。在论文原文中512&#xff0c;表示每个token用512维特征表示&#xff08;序列符号的embedding长度…

子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新

文章目录 需求弹窗关闭之后父界面刷新展示最新数据 实现方案AVUE 大文本默认展开slotVUE 自定义事件实现 父界面刷新那么如何用呢? 思路核心代码1. 事件定义2. 帕斯卡命名组件且在父组件中引入以及注册3. 子组件被引用与父事件监听4.父组件回调函数 5.按钮弹窗事件 需求 弹窗…

【图像分割】使用Otsu 算法及迭代计算最佳全局阈值估计并实现图像分割(代码实现与分析)

本实验要求理解全局阈值分割的概念&#xff0c;并实现文本图像分割。需要大家深入理解Ostu 算法的实现过程及其迭代原理&#xff0c;同时通过学习使用Otsu 算法及其迭代&#xff0c;实践图像分割技术在文本图像处理中的应用。 以下将从实验原理、实验实现、实验结果分析三部分对…

短剧分销怎么赚钱的?保姆级教程助你短剧cps推广赚大钱

短剧分销怎么赚钱的&#xff1f;小白也能月入过万/“蜂小推“保姆级教程&#xff0c;助你短剧分销赚大钱&#xff01; 相信大家或多或少都在某些群里看到一些“霸道总裁爱上职场小菜鸟...”“这类链接&#xff0c;无利不起早&#xff0c;为什么会有那么多在群里分享这些狗血视…

紧抓需求,把脉市场,方太高端全场景厨电创造厨居新范式

撰稿 | 多客 来源 | 贝多财经 随着“中国制造”向“中国智造”方向转变&#xff0c;厨电不再是单一的工具设施&#xff0c;而是现代化厨居生活的映射&#xff0c;承担着沟通连接人、家庭与社会的桥梁作用。烹饪全场景下智能高效技术、整体美学设计、品类联动能力成为厨电品牌…

【机器学习系列】M3DM工业缺陷检测部署与训练

一.基础资料 1.Git 地址 地址 2.issues issues 3.参考 参考 csdn 二.服务器信息 1.GPU 服务器 GPU 服务器自带 CUDA 安装(前提是需要勾选上)CUDA 需要选择大于 11.3 的版本登录服务器后会自动安装 GPU 驱动 2.CUDA 安装 GPU 服务器自带 CUDA CUDA 版本查看 3.登录信…