PyTorch基础(part2)
学习笔记,仅供参考,有错必究
文章目录
- PyTorch基础
- 基本操作
- 加法
- 减法/乘法/除法
- 求和、最大、最小
- 数据的索引
- 求导
PyTorch基础
基本操作
# 导入常用的包
import torch
import numpy as np
加法
a = torch.randint(1, 5, (2, 3))
b = torch.randint(1, 5, (2, 3))
a
b
tensor([[4, 1, 4],[3, 3, 2]])tensor([[3, 4, 2],[1, 3, 2]])
# 加法的3种方式
a + b
torch.add(a, b)
# a与b相加,并将返回值赋值给a
a.add_(b) # 注意:任何使张量会发生变化的操作都有一个后缀"_",例如: a.add_(), a.sub_()
a
tensor([[7, 5, 6],[4, 6, 4]])tensor([[7, 5, 6],[4, 6, 4]])tensor([[7, 5, 6],[4, 6, 4]])tensor([[7, 5, 6],[4, 6, 4]])
# 构造一个tensor,并将a + b的结果输出到tensor中
r = torch.zeros(2, 3)
torch.add(a, b, out=r)
tensor([[10., 9., 8.],[ 5., 9., 6.]])
r
tensor([[10., 9., 8.],[ 5., 9., 6.]])
减法/乘法/除法
# 减法
a - b
tensor([[4, 1, 4],[3, 3, 2]])
# 乘法(对应元素相乘)
a * b
tensor([[21, 20, 12],[ 4, 18, 8]])
# 除法(对应元素相除)
a/b
tensor([[2.3333, 1.2500, 3.0000],[4.0000, 2.0000, 2.0000]])
# 取余
a%b
tensor([[1, 1, 0],[0, 0, 0]])
# 取整
a // b
D:\software\Anaconda3\lib\site-packages\ipykernel_launcher.py:2: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
tensor([[2, 1, 3],[4, 2, 2]])
# 矩阵乘法(必须是张量中数据类型相同,才可以相乘)
a = torch.tensor([[1, 0, 2], [0, 1, 1]], dtype = float)
b = torch.ones(3, 5, dtype = float)
a
b
a.dtype, b.dtype
torch.matmul(a, b) # 2*3 * 3*5 => 2*5
tensor([[1., 0., 2.],[0., 1., 1.]], dtype=torch.float64)tensor([[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.]], dtype=torch.float64)(torch.float64, torch.float64)tensor([[3., 3., 3., 3., 3.],[2., 2., 2., 2., 2.]], dtype=torch.float64)
求和、最大、最小
# 张量求和、求平均、求中位数、求最大、求最小
a = torch.rand(2, 3)
a
torch.sum(a)
torch.mean(a)
torch.median(a)
torch.max(a)
torch.min(a)
tensor([[0.6162, 0.4631, 0.9147],[0.1778, 0.2920, 0.7270]])tensor(3.1909)tensor(0.5318)tensor(0.4631)tensor(0.9147)tensor(0.1778)
# 最大值所处位置、最小值所处位置
torch.argmin(a)
torch.argmax(a)
tensor(3)tensor(2)
# 对张量中的每个值进行开方/平方
torch.sqrt(a)
a ** 2
tensor([[0.7850, 0.6805, 0.9564],[0.4217, 0.5404, 0.8526]])tensor([[0.3797, 0.2145, 0.8367],[0.0316, 0.0853, 0.5285]])
数据的索引
a = torch.arange(2, 14) # 生成数据
print(a)
tensor([ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])
tensor(5)
print(a[3])
print(a[1:3])
print(a[5:-2])
print(a[6:])
tensor(5)
tensor([3, 4])
tensor([ 7, 8, 9, 10, 11])
tensor([ 8, 9, 10, 11, 12, 13])
idx = [1, 5, 3, 7, 7]
a[idx]
tensor([3, 7, 5, 9, 9])
for t in a:print(t)
tensor(2)
tensor(3)
tensor(4)
tensor(5)
tensor(6)
tensor(7)
tensor(8)
tensor(9)
tensor(10)
tensor(11)
tensor(12)
tensor(13)
求导
z=1n∑i=1n3×yi2,yi=xi+1z=\frac{1}{n} \sum_{i=1}^n 3 \times y_i^2, \; y_i = x_i + 1z=n1∑i=1n3×yi2,yi=xi+1
x = torch.ones((2, 2), requires_grad=True) # 定义2*2的张量,设置为允许计算梯度
x
tensor([[1., 1.],[1., 1.]], requires_grad=True)
y = x + 1
y
tensor([[2., 2.],[2., 2.]], grad_fn=<AddBackward0>)
z = (y**2) * 3
z
tensor([[12., 12.],[12., 12.]], grad_fn=<MulBackward0>)
out_mean = z.mean()
print(out_mean)
tensor(12., grad_fn=<MeanBackward0>)
# 计算 out_mean的梯度(求导)
out_mean.backward()
# out_mean对x进行求导,则x的导数为3
x.grad
tensor([[3., 3.],[3., 3.]])
PyTorch基础(part2)相关推荐
- 深入浅出Pytorch:02 PyTorch基础知识
深入浅出Pytorch 02 PyTorch基础知识 内容属性:深度学习(实践)专题 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:叶志雄 航海士:李嘉骐.牛志康.刘洋.陈安东 开源内容:http ...
- 第02章 PyTorch基础知识
文章目录 第02章 Pytorch基础知识 2.1 张量 2.2 自动求导 2.3 并行计算简介 2.3.1 为什么要做并行计算 2.3.2 CUDA是个啥 2.3.3 做并行的方法 补充:通过股票数 ...
- 深度学习之Pytorch基础教程!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...
- 【深度学习】深度学习之Pytorch基础教程!
作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展,深度学习框架开始大量的出现.尤其是近两年,Google.Facebook.Microsoft等巨头都围绕深度学习重点投资了一系 ...
- PyTorch基础(part5)--交叉熵
学习笔记,仅供参考,有错必纠 文章目录 原理 代码 初始设置 导包 载入数据 模型 原理 交叉熵(Cross-Entropy) Loss=−(t∗lny+(1−t)ln(1−y))Loss =-( ...
- PyTorch基础(part4)
学习笔记,仅供参考,有错必纠 文章目录 PyTorch 基础 MNIST数据识别 常用代码 导包 载入数据 定义网络结构 PyTorch 基础 MNIST数据识别 常用代码 # 支持多行输出 from ...
- PyTorch基础(part3)
学习笔记,仅供参考,有错必纠 文章目录 PyTorch 基础 线性回归 常用代码 导包 生成数据 构建神经网络模型 非线性回归 生成数据 构建神经网络模型 PyTorch 基础 线性回归 常用代码 # ...
- PyTorch基础(part1)
学习笔记,仅供参考,有错必究 文章目录 PyTorch基础 PyTorch介绍 PyTorch CPU版安装 导包 构造tensor tensor的基本属性 生成数据 PyTorch基础 PyTorc ...
- 深度学习导论(3)PyTorch基础
深度学习导论(3)PyTorch基础 一. Tensor-Pytorch基础数据结构 二. Tensor索引及操作 1. Tensor索引类型 2. Tensor基础操作 3. 数值类型 4. 数值类 ...
最新文章
- Android属性 android:focusableInTouchMode
- 【WPF】屏幕右下角消息提示框
- HTML 事件属性_03
- select选择框变得可以输入、编辑
- DevExpress的TreeList实现自定义节点NodeCell的背景颜色和前景色
- js获取url中的参数,url中传递中文的时候通过js解码的方式
- C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①
- 深度学习之卷积神经网络 VGGNet
- 怎么在linux编辑程序后编译,在linux里,c程序的编辑、编译、调试的详细步骤是什么?...
- HDU 6129 Just do it 组合数学 杨辉三角 递推
- python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!
- mysql能管理多大的硬盘,Mysql----查看数据库,表占用磁盘大小
- Vulnhub-THE PLANETS: EARTH
- python yield from用法
- codecademy python study
- 【NLP】从WE、ELMo、GPT到Bert模型—自然语言处理中的预训练技术发展史
- MySQL充电_mysql语法充电
- hubot+slack(hubot部分)
- 名悦集团:买一辆车花多少钱才能买到中意的
- 修改BIOS为品牌机信息安装激活Windows XP SP2
热门文章
- maven零基础从配置到运行helloworld(java maven helloworld)
- 《概率论与数理统计习题全解指南》中的“计算机得”
- tensorflow学习笔记:tf.control_dependencies,tf.GraphKeys.UPDATE_OPS,tf.get_collection
- Ubuntu使用技巧(一)
- android 环信消息红点,环信3.0获取会话消息列表
- 时序轮转的意思_天地是景框时序轮转的风景----(傻女人)
- 启动Eclipse时,启不起来JVM terminated. Exit code=-1
- 题解 UVA10328 【Coin Toss】
- 浙江省经信委与新华三签署战略合作协议
- xss 表单劫持(from通用明文记录)