PyTorch入门到进阶实战笔记一(慕课网)

本文是PyTorch入门教程,涵盖了基本的Tensor操作,包括创建、属性、算术运算和矩阵分解,还介绍了Variable、Autograd的概念,以及如何使用tensorboardX和visdom进行数据可视化。
摘要由CSDN通过智能技术生成

笔记一

PyTorch入门基础串讲

PyTorch的基本概念

Tensor

有时遇到的数据是很高维度的,很难使用矩阵或向量来描述,这时就用张量来描述任意维度的物体

image-20210318180812911

Variable(autograd)

用变量来表达参数

nn.Module

封装了许多神经网络结构

Tensor与机器学习的关系

我们使用tensor来对样本和模型进行描述

image-20210318181350457

Tensor的类型

image-20210318181810970

Tensor的创建

在这里插入图片描述

Tensor创建编程实例

import torch
'''
几种特殊的tensor
'''
a = torch.Tensor([[1,2],[3,4]])
print(a)
print(a.type())

b = torch.Tensor(2,3) #定义一个2×3的二阶tensor
#使用shape来定义时,初始值为随机值
print(b)
print(b.type())

c = torch.ones(2,2)
print(c)
print(c.type())

d = torch.eye(2,2)
print(d)
print(d.type())

e = torch.zeros(2,2)
print(e)
print(e.type())

f = torch.zeros_like(b) #跟某个tensor相同shape的全0tensor
f = torch.ones_like(b)
print(f)
print(f.type())
print("+++++++++++++++++++++++++++++++++++++++++")
'''
随机
'''
a = torch.rand(2,2)
#随机生成某个shape的tensor
print(a)
print(a.type())

b = torch.normal(mean = 0.0, std = torch.rand(5))
#构造5组不同的高斯正态分布
#生成随机满足正态分布的值
print(b)
print(b.type())

c = torch.normal(mean = torch.rand(5), std = torch.rand(5))
#随机五组均值和标准差
print(c)
print(c.type())

d = torch.Tensor(2,2).uniform_(-1,1)
#定义均匀分布
#需要先指定tensor的大小,然后再定义(-1,1)之间的均匀分布
print(d)
print(d.type())

print("+++++++++++++++++++++++++++++++++++++++++")
'''
序列
'''
a = torch.arange(0,10,2)
#定义[0,10)中步长为2的序列
print(a)
print(a.type())

b = torch.linspace(2,10,3)#拿到等间隔的n个数字
#定义一个在[2,10]之间的3个数字的等间隔序列
print(b)
print(b.type())

c = torch.randperm(10)
#生成一个[0,10)的打乱序列
print(c)
print(c.type())

print("+++++++++++++++++++++++++++++++++++++++++")
###############对比
import numpy as np

a = np.array([[1,2],[3,4]])
print(a)

tensor与numpy很相似,就像是在numpy外面套了一层tensor

Tensor的属性

每一个Tensor有torch.dtypetorch.devicetorch.layout三种属性

torch.device标识了torch.Tensor对象在创建之后所存储在的设备名称(CPU/GPU(Cuda 0 1 2))

torch.layout表示torch.Tensor内存布局的对象(稠密的张量)【sparse张量以稀疏形式进行存储】

torch.tensor([1,2,3],dtype=torch.float32,device=torch.device('cpu')) 
#定义稠密的张量

稀疏的张量

稀疏:描述了当前的数据中非零元素的个数

  • torch.sparse_coo_tensor
  • coo类型表示了非零元素的坐标形式
indices = torch.tensor([[0,1,1],[2,0,2]]) # 非零元素的坐标值
values = torch.tensor([3,4,5],dtype=torch.float32)# 非零元素的值
x = torch.sparse_coo_tensor(indices,values,[2,4])#shape=2×4
import torch
dev = torch.device("cpu")#将tensor放置在cpu上计算
#dev = torch.device("cuda:0") #放置在第0块显卡上
a = torch.tensor([2,2],dtype=torch.float32,device = dev)
print(a)

#定义稀疏张量
i = torch.tensor([[0,1,2],[0,1,2]])
v = torch.tensor([1,2,3])
a = torch.sparse_coo_tensor(i,v,(4,4))
print(a)
a = torch.sparse_coo_tensor(i,v,(4,4)).to_dense()#转成稠密张量
print(a)
a = torch.sparse_coo_tensor(i,v,(4,4),dtype = torch.float32,device = dev)
print(a)

Tensor的算术运算

加法运算

c = a + b
c = torch.add(a,b)
a.add(b)
#带下划线的方式在计算的同时将a的值进行修改
a.add_(b)

减法运算

c = a - b
c = torch.sub(a,b)
a.sub(b)
a.sub_(b)

乘法运算

哈达玛积(element wise,对应元素相乘【维度相同】)

c = a * b
c = torch.mul(a,b)
a.mul(b)
a.mul_(b)

除法运算

c = a / b
c = torch.div(a,b)
a.div(b)
a.div_(b)

矩阵运算

二维矩阵乘法运算操作包括torch.mm()、torch.matmul()、@

矩阵维度首尾呼应

a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值