首页 > 其他分享 >AI_Pytorch—内容回顾

AI_Pytorch—内容回顾

时间:2023-07-12 14:47:44浏览次数:31  
标签:__ nn 回顾 AI torch PyTorch Pytorch data Tensor

pytorch

基本结构与组件-基本流程与步骤-基本方法和应用
组件 PyTorch都是用C++和CUDA编写的
  modules and classes 
    torch.nn , 
	torch.optim , 
	Dataset , and DataLoader

学、练、训、赛、研、用
  device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") 
  mindspore.set_context(device_target='Ascend', device_id=0)
Pytorch: 
   Tensor、 Parameter、Buffer

  nn.Module 中常用的功能都可以在\nn.Cell 中找到映射



MindSpore 优化了数据对象的设计逻辑,仅保留了两种数据对象:Tensor 和 Parameter
   Tensor 对象仅参与运算,并不需要对其进行梯度求导和参数更新
   Parameter 数据对象和 PyTorch 的 Parameter 意义相同,会根据其属性requires_grad 来决定是否对其进行梯度求导和 参数更新

包说i名

PyTorch的默认运行方式为即时执行(eager mode)
import torch
import torch.nn as nn
import torch.optim as optimizer	
from torch.utils.data import Dataset,DataLoader
   torch.nn.init提供了常用的初始化方法
   torch.nn.BCELoss  torch.nn.MultiMarginLoss 损失函数
   torch.optim 提供了多种优化器
   功能: 
      数据读入和加载  torch.utils.data
	  模型设计        torch.nn. torch.nn.Sequential
	                  torch.nn中,该模块提供了常见的神经网络层和其他架构组
	  损失函数        torch.nn.MultiMarginLoss 
	  提供了多种优化器 torch.optim
	     torch.nn.init提供了常用的初始化方法
  底层实现: torch.autograd

基本内容

torch.__version__
import numpy as np
import torch

print(torch.cuda.is_available(),torch.__version__)
data = [[1,2],[3,4]]
np_array = np.array(atad)
x_data=torch.tensor(data)
print(data,np_array,x_data)
print(data.__class__,np_array.__class__,x_data.__class__)
print(type(data),type(np_array),type(x_data))
print(dir(data),dir(np_array),dir(x_data))

print(help(x_data ))
print(help(torch.tensor ))

### 通过dir 查看数据的属性--查看tensor的特性

### 查看函数说明  help() 加函数名的方式能够在终端输出文档内容。注意:只用输入函数名,不是调用函数,所以不要写个括号
###type() dir() help() id()
## dir() 返回一个列表,其中包含字符串str的所有属性和方法
## vars()函数,我们可以很方便地查看自定义对象的属性和值
##测试该对象的属性:配合getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态

 >>> hasattr(obj, 'x') # 有属性'x'吗?
__dict__属性,我们可以很方便地查看自定义对象的所有属性和值 利用__dict__可以给运行中的对象添加新的属性
   对象属性的几种方式
    方法一:使用属性运算符
      print(xmr.name)
    方法二:通过属性字典__dict__
      print(xmr.__dict__[‘name’])
    方法三:通过getattr函数
       print(getattr(xmr, ‘name’))
    方法四:operator.attrgetter	
	
##
 用类名直接调用__dict__,会输出该类中所有类属性和方法组成的字典;
 用类的实例对象调用__dict__,会输出该类中所有实例属性组成的字典;因为方法定义在类中,对象中没有定义方法,只是可以去调用类中的方法	

查看源码

三大命名空间:at、torch、c10
   1.at(ATen)负责声明和定义Tensor运算,是最常用到的命名空间
   2.c10是 ATen 的基础,包含了PyTorch的核心抽象、Tensor和Storage数据结构的实际实现
   3.torch命名空间下定义的 Tensor 相比于ATen 增加自动求导功能
   ATen,来自于 A Tensor library for C++11的缩写,ATen部分有大量的代码是来声明和定义Tensor运算相关的逻辑的
   C10,来自于Caffe Tensor Library的缩写
PyTorch的源代码主要是通过C++编写的,
    同时C++的接口暴露出来给Python调用
	C10主要目的之一是为了统一Pytorch的张量计算后端代码和caffe2的张量计算后端代码
	
过ATen(A Tensor Library)张量计算库	

通过案例

 案例以及对案例代码的修改

通过文档

文档的解释

张量

   有两种定义张量的方法 
      是把张量看成一个多维数组,当变换座标或变换基底时,其分量会按照一定变换的规则
	  是把张量定义成某个向量空间或其对偶空间上的多重线性映射,这向量空间在需要引入基底之前不固定任何坐标系统

数据

torch.utils.data.DataLoader and torch.utils.data.Dataset

模型

训练

Many layers inside a neural network are parameterized, 
  i.e. have associated weights and biases that are optimized during training. 
  Subclassing nn.Module automatically tracks all fields defined inside your model object, 
     and makes all parameters accessible using your model’s parameters() or named_parameters() methods.	
requires_grad   x.requires_grad_(True)  grad_fn  grad 

	
optimizer.zero_grad()
loss.backward()	
optimizer.step()


with torch.no_grad():
    z = torch.matmul(x, w)+b

框架

一个深度学习框架的使用场景有两类,科研和工程落地,前者需要有足够的灵活度和易用性,而后者需要的是部署和性能,这两者本身是有一些Gap的 
Forward Propagation  Backward Propagation:

dtype = torch.float
device = "cuda" if torch.cuda.is_available() else "cpu"
torch.set_default_device(device)

PyTorch 是基于计算路径追踪的自动微分,当我们定义一个网络结构后, 并不会建立反向图,
 而是在执行正向图的过程中, Parameter 记录每一个正向计算对应的反向函数,并生成一个动态计算图,
   用于后续的梯度计算。当在最终的输出处调用 backward 时,就会从根节点到叶节点应用链式法则计算梯度。
   PyTorch 的动态计算图所存储的节点实际是 Function 函数对象,每当对 Tensor 执行一步运算后,就会产生一个 Function 对象,
 它记录了反向传播中必要的信息。
 反向传播过程中,autograd 引擎会按照逆序,通过 Function 的 backward 依次计算梯度
 
 提供了 state_dict() 用于优化器状态的查看及保存
 
MindSpore 的自动微分是基于图结构的微分 
  自动微分时,需要传入正向图结构,自动微分的过程就是通过对正向图的分析从而得到反向传播信息,
    自动微分的结果与正向计算中具体的数值无关,仅和正向图结构有关
  其实图结构里既包含了正向算子,又包含了 MindSpore 为我们添加的反向算子,也就是说,MindSpore 在我们定义的正向图后面又新加了一个看不见的 Cell,
  这个 Cell 里都是根据正向图推导出来的反向算子。	
    构建反向图的接口就是 grad -们定义的正向图和自动微分得到的反向图
	
	MindSpore的学习率支持静态、动态、分组三种-包到优化器里面的,每调用一次优化器,学习率更新的step会自动更新一次

步骤:

 获取参考代码 -- 分析算法及网络结构	--复现论文实现

参考

https://pytorch.org/tutorials/beginner/basics/tensorqs_tutorial.html
https://pytorch.org/cppdocs/
https://github.com/mindspore-ai/mindspore
与PyTorch典型区别 https://www.mindspore.cn/docs/zh-CN/master/migration_guide/typical_api_comparision.html
PyTorch与MindSpore API映射表 https://www.mindspore.cn/docs/zh-CN/master/note/api_mapping/pytorch_api_mapping.html
https://github.com/ShusenTang/Deep-Learning-with-PyTorch-Chinese/tree/master
https://tangshusen.me/Deep-Learning-with-PyTorch-Chinese/#/

标签:__,nn,回顾,AI,torch,PyTorch,Pytorch,data,Tensor
From: https://www.cnblogs.com/ytwang/p/17547441.html

相关文章

  • 松鼠智能AI:为您量身定制的chatgpt智能聊天机器人
    在当今的智能化时代,人工智能技术在各个领域都有着广泛的应用,其中聊天机器人更是得到了大家的热烈欢迎。然而,许多人在与AI聊天时却经常出现一种状况:聊天机器人明明有着强大的智能,却不能真正理解用户的需求,无法解答专业问题,经常给人一种“对牛弹琴”的感觉。为了解决这一问题,你可以尝......
  • 手把手教你用 NebulaGraph AI 全家桶跑图算法
    前段时间NebulaGraph3.5.0发布,@whitewum吴老师建议我把前段时间NebulaGraph社区里开启的新项目ng_ai公开给大家。所以,就有了这个系列文章,本文是该系列的开篇之作。ng_ai是什么ng_ai的全名是:NebulagraphAISuite,顾名思义,它是在NebulaGraph之上跑算法的Python套......
  • Forex嘉盛集团kaihu要求及步骤(外汇110网)
    Forex嘉盛集团kaihu有什么要求?这是最近备受关注的话题,很多人都在热议,到底嘉盛集团kaihu需要满足什么条件?今天我们就来给大家揭秘。首先,嘉盛集团是一家专业的外汇交易平台,对于kaihu要求非常严格。想要kaihu的用户需要提供个人身份证明、银行卡信息、电话号码等多项资料,同时还需要......
  • Topaz DeNoise AI mac版(AI智能图像降噪工具)
    TopazDeNoiseAI是一款基于人工智能技术的图像降噪工具,能够帮助用户快速高效地去除图像中的噪点和杂色,提升图像的清晰度和细节。该软件采用了最新的深度学习算法,能够自动识别并去除各种类型的噪点,包括色斑、颗粒、条纹等,同时还能够保持图像的细节和色彩饱和度,避免出现过度平滑的......
  • 解决docker报错Job for docker.service failed because start of the service was att
    转载自:https://blog.csdn.net/Along_168163/article/details/124118833=================== docker安装之后重新安装报错如下:Jobfordocker.servicefailedbecausestartoftheservicewasattemptedtoooften.See"systemctlstatusdocker.service"and"journa......
  • C#连接Redis - Redis教程 (yiibai.com) (转)
    C#连接Redis-Redis教程(yiibai.com)classProgram{staticvoidMain(string[]args){//在Redis中存储常用的5种数据类型:String,Hash,List,SetSortedsetvarclient=newRedisClient("127.0.0.1",6379);//A......
  • SQL 约束(Constraints)
    SQL约束约束用于限制加入表的数据的类型。可以在创建表时规定约束(通过CREATETABLE语句),或者在表创建之后也可以(通过ALTERTABLE语句)。我们将主要探讨以下几种约束:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECKDEFAULT详细讲解每一种约束。SQLNOTNULL约束NOTN......
  • fatal: 无法访问 'https://github.com/nmww/lingyun.git/':Failed to connect to githu
      fatal:无法访问'https://github.com/nmww/lingyun.git/':Failedtoconnecttogithub.comport443after13ms:Connectionrefused gitconfig--globalhttps.proxyhttp://127.0.0.1:1080gitconfig--globalhttp.proxyhttp://127.0.0.1:1080 fatal......
  • UESTC 2023 Summer Training #02 Div.2
    Preface都给我丑完了这怎么办啊,被血虐了苦路西这场本来前面感觉都还可以,但是当中期看了眼C的题意后准备开C后就不对劲了起来最后1h扔掉一直T的C题去做H,结果因为被卡自然溢出的Hash一直挂到比赛结束,直接红温感觉这场策略问题挺大的,比如没有跟榜去写更加简单的E题(比赛的时候题......
  • 经纬张颖《如何看待AI拐点》
    01对AI发展的一些判断1.对AI发展的态度,不FOMO,也不JOMO。今天人工智能很多能力的涌现,不是从去年底ChatGPT出现才开始的,而是从2017-18年就开始的新一轮数据和算力革命,是技术累积的量变到质变。先说说我们的态度,我们既不会因为FOMO而仓促出手(Fear Of Missing Out),也不会因为JOM......