PyTorch一小时掌握之基本操作篇

目录
  • 创建数据
    • torch.empty()
    • torch.zeros()
    • torch.ones()
    • torch.tensor()
    • torch.rand()
  • 数学运算
    • torch.add()
    • torch.sub()
    • torch.matmul()
  • 索引操作

创建数据

torch.empty()

创建一个空张量矩阵.

格式:

torch.empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) → Tensor

参数:

  • size: 生成矩阵的形状, 必选
  • dtype: 数据类型, 默认为 None

例子:

# 创建一个形状为[2, 2]的矩阵
a = torch.empty(2, 2)
print(a)

# 创建一个形状为[3, 3]的矩阵
b = torch.empty(3, 3)
print(b)

输出结果:

tensor([[0., 0.],
[0., 0.]])
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])

torch.zeros()

创建一个全零矩阵.

格式:

torch.zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

参数:

  • size: 生成矩阵的形状, 必选
  • dtype: 数据类型, 默认为 None

例子:

# 创建一个形状为[2, 2]的全零数组
a = torch.zeros([2, 2], dtype=torch.float32)
print(a)

# 创建一个形状为[3, 3]的全零数组
b = torch.zeros([3, 3], dtype=torch.float32)
print(b)

输出结果:

tensor([[0., 0.],
[0., 0.]])
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])

torch.ones()

创建一个全一矩阵.

格式:

torch.ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

参数:

  • size: 生成矩阵的形状, 必选
  • dtype: 数据类型, 默认为 None

例子:

# 创建一个形状为[2, 2]的全一数组
a = torch.ones([2, 2], dtype=torch.float32)
print(a)

# 创建一个形状为[3, 3]的全一数组
b = torch.ones([3, 3], dtype=torch.float32)
print(b)

输出结果:

tensor([[1., 1.],
[1., 1.]])
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])

torch.tensor()

通过数据创建张量.

格式:

torch.tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False) → Tensor

参数:

  • data: 数据 (数组, 元组, ndarray, scalar)
  • dtype: 数据类型, 默认为 None

例子:

# 通过数据创建张量
array = np.arange(1, 10).reshape(3, 3)
print(array)
print(type(array))

tensor = torch.tensor(array)
print(tensor)
print(type(tensor))

输出结果:

[[1 2 3]
[4 5 6]
[7 8 9]]
<class 'numpy.ndarray'>
tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], dtype=torch.int32)
<class 'torch.Tensor'>

torch.rand()

创建一个 0~1 随机数的张量矩阵.

格式:

torch.rand(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

参数:

  • size: 生成矩阵的形状, 必选
  • dtype: 数据类型, 默认为 None

例子:

# 创建形状为[2, 2]的随机数矩阵
rand = torch.rand(2, 2)
print(rand)

输出结果:

tensor([[0.6209, 0.3424],
[0.3506, 0.7986]])

数学运算

torch.add()

返回相加的张量.

格式:

torch.add(input, other, *, out=None) → Tensor

例子:

# 张量相加
input1 = torch.tensor([[1, 2], [3, 4]])
print(input1)

input2 = torch.tensor([[4, 3], [2, 1]])
print(input2)

output = torch.add(input1, input2)
print(output)

输出结果:

tensor([[1, 2],
[3, 4]])
tensor([[4, 3],
[2, 1]])
tensor([[5, 5],
[5, 5]])

注: 相加的张量形状必须一致, 否则会报错.

torch.sub()

返回相减的张量.

例子:

# 张量相减
input1 = torch.tensor([[1, 2], [3, 4]])
print(input1)

input2 = torch.tensor([[4, 3], [2, 1]])
print(input2)

output = torch.sub(input1, input2)
print(output)

输出结果:

tensor([[1, 2],
[3, 4]])
tensor([[4, 3],
[2, 1]])
tensor([[-3, -1],
[ 1, 3]])

torch.matmul()

例子:

# 张量矩阵相乘
input1 = torch.tensor([[1, 1, 1]])
print(input1)

input2 = torch.tensor([[3], [3], [3]])
print(input2)

output = torch.matmul(input1, input2)
print(output)

输出结果:

tensor([[1, 1, 1]])
tensor([[3],
[3],
[3]])
tensor([[9]])

索引操作

索引 (index) 可以帮助我们快速的找到张量中的特定信息.

例子:

# 简单的索引操作
ones = torch.ones([3, 3])
print(ones[: 2])
print(ones[:, : 2])

调试输出:

tensor([[1., 1., 1.],
[1., 1., 1.]])
tensor([[1., 1.],
[1., 1.],
[1., 1.]])

到此这篇关于PyTorch一小时掌握之基本操作篇的文章就介绍到这了,更多相关PyTorch基本操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PyTorch一小时掌握之神经网络气温预测篇

    目录 概述 导包 数据读取 数据预处理 构建网络模型 数据可视化 完整代码 概述 具体的案例描述在此就不多赘述. 同一数据集我们在机器学习里的随机森林模型中已经讨论过. 导包 import numpy as np import pandas as pd import datetime import matplotlib.pyplot as plt from pandas.plotting import register_matplotlib_converters from sklearn.pre

  • PyTorch一小时掌握之图像识别实战篇

    目录 概述 预处理 导包 数据读取与预处理 数据可视化 主体 加载参数 建立模型 设置哪些层需要训练 优化器设置 训练模块 开始训练 测试 测试网络效果 测试训练好的模型 测试数据预处理 展示预测结果 概述 今天我们要来做一个进阶的花分类问题. 不同于之前做过的鸢尾花, 这次我们会分析 102 中不同的花. 是不是很上头呀. 预处理 导包 常规操作, 没什么好解释的. 缺模块的同学自行pip -install. import numpy as np import time from matplo

  • PyTorch一小时掌握之神经网络分类篇

    目录 概述 导包 设置超参数 读取数据 可视化展示 建立模型 训练模型 完整代码 概述 对于 MNIST 手写数据集的具体介绍, 我们在 TensorFlow 中已经详细描述过, 在这里就不多赘述. 有兴趣的同学可以去看看之前的文章: https://www.jb51.net/article/222183.htm 在上一节的内容里, 我们用 PyTorch 实现了回归任务, 在这一节里, 我们将使用 PyTorch 来解决分类任务. 导包 import torchvision import to

  • PyTorch一小时掌握之autograd机制篇

    目录 概述 代码实现 手动定义求导 计算流量 反向传播计算 线性回归 导包 构造 x, y 构造模型 参数 & 损失函数 训练模型 完整代码 概述 PyTorch 干的最厉害的一件事情就是帮我们把反向传播全部计算好了. 代码实现 手动定义求导 import torch # 方法一 x = torch.randn(3, 4, requires_grad=True) # 方法二 x = torch.randn(3,4) x.requires_grad = True b = torch.randn(3

  • PyTorch一小时掌握之基本操作篇

    目录 创建数据 torch.empty() torch.zeros() torch.ones() torch.tensor() torch.rand() 数学运算 torch.add() torch.sub() torch.matmul() 索引操作 创建数据 torch.empty() 创建一个空张量矩阵. 格式: torch.empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_gr

  • PyTorch一小时掌握之迁移学习篇

    目录 概述 为什么使用迁移学习 更好的结果 节省时间 加载模型 ResNet152 冻层实现 模型初始化 获取需更新参数 训练模型 获取数据 完整代码 概述 迁移学习 (Transfer Learning) 是把已学训练好的模型参数用作新训练模型的起始参数. 迁移学习是深度学习中非常重要和常用的一个策略. 为什么使用迁移学习 更好的结果 迁移学习 (Transfer Learning) 可以帮助我们得到更好的结果. 当我们手上的数据比较少的时候, 训练非常容易造成过拟合的现象. 使用迁移学习可以

  • TensorFlow2基本操作之合并分割与统计

    目录 合并与分割 tf.concat tf.stack tf.unstack tf.split 数据统计 tf.norm reduce_min/max/mean argmax / argmin tf.equal tf.unique 合并与分割 tf.concat tf.concat可以帮助我们实现拼接操作. 格式: tf.concat( values, axis, name='concat' ) 参数: values: 一个 tensor 或 tensor list axis: 操作的维度 na

  • 使用Pytorch来拟合函数方式

    其实各大深度学习框架背后的原理都可以理解为拟合一个参数数量特别庞大的函数,所以各框架都能用来拟合任意函数,Pytorch也能. 在这篇博客中,就以拟合y = ax + b为例(a和b为需要拟合的参数),说明在Pytorch中如何拟合一个函数. 一.定义拟合网络 1.观察普通的神经网络的优化流程 # 定义网络 net = ... # 定义优化器 optimizer = torch.optim.Adam(net.parameters(), lr=0.001, weight_decay=0.0005)

  • 教你一分钟在win10终端成功安装Pytorch的方法步骤

    小书学习的主要方向是TensorFlow和Pytorch,今天就来安装一下Pytorch. 第一步:去官网看看 Pytorch官网:(https://pytorch.org/) 点击get started 第二步:选择与自己相匹配的版本,这里显示是我安装的选择. 复制命令到win10终端: 第三步:成功安装: C:\Users\Shu\Desktop>pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-w

  • CNN的Pytorch实现(LeNet)

    目录 CNN的Pytorch实现(LeNet) 1. 任务目标 2. 库的导入 3. 模型定义 4. 数据加载.处理 5.模型训练 整个代码 CNN的Pytorch实现(LeNet)   上次写了一篇CNN的详解,可是累坏了老僧我.写完后拿给朋友看,朋友说你这Pytorch的实现方式对于新人来讲会很不友好,然后反问我说里面所有的细节你都明白了吗.我想想,的确如此.那个源码是我当时<动手学pytorch>的时候整理的,里面有很多包装过的函数,对于新入门的人来讲,的确是个大问题.于是,痛定思痛的我

随机推荐