学习笔记,仅供参考,有错必究


文章目录

  • 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=1n​3×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)相关推荐

  1. 深入浅出Pytorch:02 PyTorch基础知识

    深入浅出Pytorch 02 PyTorch基础知识 内容属性:深度学习(实践)专题 航路开辟者:李嘉骐.牛志康.刘洋.陈安东 领航员:叶志雄 航海士:李嘉骐.牛志康.刘洋.陈安东 开源内容:http ...

  2. 第02章 PyTorch基础知识

    文章目录 第02章 Pytorch基础知识 2.1 张量 2.2 自动求导 2.3 并行计算简介 2.3.1 为什么要做并行计算 2.3.2 CUDA是个啥 2.3.3 做并行的方法 补充:通过股票数 ...

  3. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

  4. 【深度学习】深度学习之Pytorch基础教程!

    作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展,深度学习框架开始大量的出现.尤其是近两年,Google.Facebook.Microsoft等巨头都围绕深度学习重点投资了一系 ...

  5. PyTorch基础(part5)--交叉熵

    学习笔记,仅供参考,有错必纠 文章目录 原理 代码 初始设置 导包 载入数据 模型 原理 交叉熵(Cross-Entropy) Loss=−(t∗ln⁡y+(1−t)ln⁡(1−y))Loss =-( ...

  6. PyTorch基础(part4)

    学习笔记,仅供参考,有错必纠 文章目录 PyTorch 基础 MNIST数据识别 常用代码 导包 载入数据 定义网络结构 PyTorch 基础 MNIST数据识别 常用代码 # 支持多行输出 from ...

  7. PyTorch基础(part3)

    学习笔记,仅供参考,有错必纠 文章目录 PyTorch 基础 线性回归 常用代码 导包 生成数据 构建神经网络模型 非线性回归 生成数据 构建神经网络模型 PyTorch 基础 线性回归 常用代码 # ...

  8. PyTorch基础(part1)

    学习笔记,仅供参考,有错必究 文章目录 PyTorch基础 PyTorch介绍 PyTorch CPU版安装 导包 构造tensor tensor的基本属性 生成数据 PyTorch基础 PyTorc ...

  9. 深度学习导论(3)PyTorch基础

    深度学习导论(3)PyTorch基础 一. Tensor-Pytorch基础数据结构 二. Tensor索引及操作 1. Tensor索引类型 2. Tensor基础操作 3. 数值类型 4. 数值类 ...

最新文章

  1. Android属性 android:focusableInTouchMode
  2. 【WPF】屏幕右下角消息提示框
  3. HTML 事件属性_03
  4. select选择框变得可以输入、编辑
  5. DevExpress的TreeList实现自定义节点NodeCell的背景颜色和前景色
  6. js获取url中的参数,url中传递中文的时候通过js解码的方式
  7. C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①
  8. 深度学习之卷积神经网络 VGGNet
  9. 怎么在linux编辑程序后编译,在linux里,c程序的编辑、编译、调试的详细步骤是什么?...
  10. HDU 6129 Just do it 组合数学 杨辉三角 递推
  11. python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!
  12. mysql能管理多大的硬盘,Mysql----查看数据库,表占用磁盘大小
  13. Vulnhub-THE PLANETS: EARTH
  14. python yield from用法
  15. codecademy python study
  16. 【NLP】从WE、ELMo、GPT到Bert模型—自然语言处理中的预训练技术发展史
  17. MySQL充电_mysql语法充电
  18. hubot+slack(hubot部分)
  19. 名悦集团:买一辆车花多少钱才能买到中意的
  20. 修改BIOS为品牌机信息安装激活Windows XP SP2

热门文章

  1. maven零基础从配置到运行helloworld(java maven helloworld)
  2. 《概率论与数理统计习题全解指南》中的“计算机得”
  3. tensorflow学习笔记:tf.control_dependencies,tf.GraphKeys.UPDATE_OPS,tf.get_collection
  4. Ubuntu使用技巧(一)
  5. android 环信消息红点,环信3.0获取会话消息列表
  6. 时序轮转的意思_天地是景框时序轮转的风景----(傻女人)
  7. 启动Eclipse时,启不起来JVM terminated. Exit code=-1
  8. 题解 UVA10328 【Coin Toss】
  9. 浙江省经信委与新华三签署战略合作协议
  10. xss 表单劫持(from通用明文记录)