深度学习框架pytorch入门与实践(一):torch的基本使用
时间:2019-08-10
本文章向大家介绍深度学习框架pytorch入门与实践(一):torch的基本使用,主要包括深度学习框架pytorch入门与实践(一):torch的基本使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# -*- coding: utf-8 -*- """ Created on Thu Aug 8 16:40:47 2019 pytorch快速入门教程 参考书籍:《深度学习框架pytorch:入门与实践》 @author: zhaoqidong """ import torch as t import numpy as np #####################1Tensor的基础使用########### #1.1、构建5*3的矩阵,未分配空间进行初始化 x1=t.Tensor(5,3) print(x1) #1.2、使用[0 1]的均匀分布随机初始化二维数组 x2=t.rand(5,3) print(x2) #1.3、查看矩阵的形状 print(x2.shape) print(x2.size())#等价写法 #1.4、tensor 的加法 y=t.rand(5,3) z=y+x1 print(z) y2=t.add(y,x1)#加法的等价写法 print(y2) y2.add_(100) print(y2) #注释:add_与add的不同 # add_ 以_进行结尾,函数会修改对象本身的值 # add的语法则是等式形式 ########################2、Tensor与numpy的结合########################### #tensor不支持的操作可以先转为numpy,操作之后在转为tensor进行操作 #2.1、tensor转换为numpy a_tensor=t.ones(5) print(a_tensor) b_np=a_tensor.numpy()#tensor—>numpy print(b_np) #2.2、将numpy转换为tensor c_np=np.ones(5) print(c_np) d_tensor=t.from_numpy(c_np)#numpy->tensor print(d_tensor) #注意:tensor与numpy之间的转换,对象共享内存!! # 内存共享意味着二者之间的转换会很快, # 但是同时意味着一方的值改变之后,另外一方的值也会随之更改。 #验证如下: a_tensor.add_(1000) print("内存共享:",a_tensor) print("内存共享:",b_np) ##################3、tensor可以使用CUDA加速###################### if t.cuda.is_available(): y=y.cuda() y2=y2.cuda() print(x+y2) #####################4、Autograd:自动微分####################### #autograd.Veribale是Autograd中的核心类,封装了tensor之后,可以调用backward实现自动计算反向梯度 from torch.autograd import Variable x_var=Variable(t.ones(2,2),requires_grad=True) print(x_var) y_var=x_var.sum() print(y_var) print(y_var.grad_fn) y_var.backward() print("第一次反向传播",x_var.grad) y_var.backward() print("第二次反向传播",x_var.grad) # 注意:grad在反向传播的过程中是累加的,深度学习是多层神经网络,在每次反向传播结束之后会累加上次的结果。 # 基于上述原因,训练过程中会在首次反向传播之前将梯度置为零。 #将梯度置为零 x_var.grad.data.zero_() print(x_var.grad) y_var.backward() print("置零之后反向传播",x_var.grad)
原文地址:https://www.cnblogs.com/xiaoxiaoke/p/11331272.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android画板开发之撤销反撤销功能
- Android实现复制Assets文件到SD卡
- Android画板开发之添加背景和保存画板内容为图片
- 直播插件体系设计
- linux 下selenium chrome使用详解
- WeTest:五年沉淀,打造游戏品质的坚实后盾
- ES5新增方法
- 筛选商品案例
- volatile关键字在Android中到底有什么用?
- Python无头爬虫下载文件的实现
- Python基于stuck实现scoket文件传输
- Python %r和%s区别代码实例解析
- Python基础类继承重写实现原理解析
- python torch.utils.data.DataLoader使用方法
- Android自定义橡皮擦效果