Pytorch常用命令

一、张量处理

1、张量创建

1.1

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

功能:从data创建tensor

  • data:数据,list或numpy
  • dtype:数据类型,默认与data一致
  • device:所在设备
  • requires_grad:是否需要梯度
  • pin_memory:是否存于锁页内存

1.2

torch.from_numpy(ndarray)

功能:从numpy创建tensor,创建后的tensor与numpy共享内存,即一个修改后另一个也会随之改变

1.3

torch.zeros(size,
			out=None,
			dtype=None,
			layout=torch.strided,
			device=None,
			requires_grad=False)
  • size:张量的形状,如(2,2)
  • out:输出的张量
  • layout:内存中的布局形式(一般用不到)
  • device:所在设备
  • requires_grad:是否需要梯度

1.4

 torch.zeros_like(input,
				  dtype=None,
				  layout=None,
				  device=None,
 				  requires_grad=False)
  • input:创建于input同形状的全0张量
  • dtype:数据类型
  • layout:内存中布局形式

1.5

 torch.ones()与torch.zeros类似
torch.ones_like()与torch.zeros_like类似

1.6

torch.normal(mean,
			 std,
			 out=None)

功能:生成正态分布

  • mean:均值
  • std:标准差

2、张量的操作

2.1 张量的拼接与切分

torch.cat(tensors,
		  dim=0,
		  out=None)

功能:将张量按维度dim进行拼接

  • tensors:张量序列
  • dim:要拼接的维度
torch.stack(tensors,
			dim=0,
			out=None)

功能:在新创建的维度dim上进行拼接

  • tensors:张量序列
  • dim:要拼接的维度
 torch.chunk(input,
			 chunks,
			 dim=0 )

功能:将张量按维度dim进行平均切分
返回值:张量列表

  • input:要切分的张量
  • chunks:要切分的份数
  • dim:要切分的维度
torch.split(tensor,
			split_size_or_sections,
			dim=0)

功能:将张量按维度dim进行切分
返回值:张量列表

  • tensor:要切分的张量
  • split_size_or_sections:为int时,表示每一份的长度;为list时,按list元素切分
  • dim:要切分的维度

2.2张量变换

torch.reshape(input,
			  shape)

功能:变换张量形状

  • input:要变换的张量
  • shape:新张量的形状
torch.transpose(input,
				dim0,
				dim1)

功能:交换张量的两个维度

  • input:要变换的张量
  • dim0:要交换的维度
  • dim1:要交换的维度
torch.t(input)

功能:2维张量转置,对矩阵而言,等价于torch.transpose(input,0,1)

torch.squeeze(input,
			  dim,
			  out=None)

功能:压缩长度为1的轴

  • dim:若为None,移除所有长度为1的轴;若指定维度,当且仅当该轴长度为1时,可以被移除;
torch.unsqueeze(input,
				dim,
				out=None)

功能:依据dim扩展维度

3、张量的运算

函数汇总(具体的使用在用到时去查阅官方文档即可)

3.1加减乘除

 torch.add()
 torch.addcdiv()
 torch.addcmul()
 torch.sub()
 torch.div()
 torch.mul()

3.2对数,指数,幂函数

torch.log()
torch.log10()
torch.log2()
torch.exp()
torch.pow()

3.3三角函数

torch.abs()
torch.acos()
torch.cosh()
torch.cos()
torch.asin()
torch.atan()
torch.atan2()

详细介绍几个常用的运算函数

torch.add(input,
		  alpha=1,
		  other,
		  out=None)

功能:逐元素计算 input + alpha x other

  • input:第一个张量
  • alpha:乘项因子
  • other:第二个张量
torch.mm(tensor1, tensor2)

功能:(m x n) x (n x p) -> (m x p).

torch.bmm(tensor1, tensor2)

功能: (b x m x n) x (b x n x p) -> (b x m x p)

二、数据的装载

1、DataLoader

torch.utils.data.DataLoader(dataset,
							batch_size=1,
							shuffle=False,
							sample=None,
							batch_sample=None,
							num_workers=0,
							collate_fn=None,
							pin_memory=Flase,
							drop_last=False,
							timeout=0,
							worker_init_fn=None,
							multiprocessing_context=None)
  • dataset:Dataset类,决定数据从哪读取及如何读取
  • batch_size:批大小
  • num_workers:是否多进程读取数据
  • shuffle:每个epoch是否乱序
  • drop_last:当样本数不能被batchsize整除时,是否舍弃最后一批数据

2、Dataset

torch.utils.data.Dataset()

功能:Dataset抽象类,所有自定义的Dataset需要继承它,并且复写。

三、图像预处理

transformers

  • torchvision.transformers:常用的图像预处理方法
  • torchvision.datasets:常用数据集的dataset实现,MNIST,CIFAR-10,ImageNet等
  • torchvision.model:常用的模型预训练,AlexNet,VGG,ResNet,GoogleLeNet等

1、图片裁剪

1.1、transforms.CenterCrop()
功能:从图像中心裁剪图片
1.2、transforms.RandomCrop()
功能:从图中随机裁剪出尺寸为size的图片

2、图片翻转

2.1、transforms.RandomHorizontalFlip()
功能:依概率水平翻转
2.2、transforms.RandomVerticalFlip()
功能:依概率垂直翻转
2.3、transforms.RandomRotation()
功能:随机旋转图片

3、图片操作

3.1、transforms.Pad()
功能:对图片边缘进行填充
3.2、transforms.ColorJitter()
功能:调整亮度、对比度、饱和度和色相
3.3、transforms.RandomGrayscale()
功能:依概率将图片转换为灰度图

四、基本配置

1导入包和版本查询

import torch
import torch.nn as nn
import	torchvision
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
print(torch.cuda.get_device_name(0))

2、显卡设置

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

如果有多张显卡,则

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'

清除显存

torch.cuda.empty_cache()

3、torch.cuda常用方法

torch.cuda.device_count() # 计算当前可见可用gpu数
torch.cuda.get_device_name() # 获取gpu名称
torch.cuda.manual_seed()  # 为当前gpu设置随机种子
torch.cuda.manual_seed_all() # 为所有可见gpu设置随机种子  

你可能感兴趣的:(pytorch,pytorch,python,深度学习)