一些函数
Posted doctorzhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些函数相关的知识,希望对你有一定的参考价值。
import torch.nn as nn
layers = nn.Linear(10, 2)
= nn.Sequential(a, b)
img = img.view( , )
Pycharm中什么函数可以ctrl左键,,,,
一个模块中的方法为什么不行,因为没有导入文件夹,而是直接运行
argparse 模块,
argparse.add_argument
多元正态分布的概率密度是由协方差矩阵的特征向量控制旋转(rotation),特征值控制尺度(scale),除了协方差矩阵,均值向量会控制概率密度的位置
创建torch可训练的数据集
x = torch.linspace(1,10,10) 最后的10 ,是10个点,什么时候第三个数据是数量,什么时候是步长
cat 拼接 stack 堆起来, 维度维度维度
torch.tensor 默认是浮点型的 torch.FloatTensor
pytorch的基本数据类型,各式各样的张量,可以理解为多维矩阵
pytorch中的Tensor包括CPU上的数据和GPU上的数据
torch.Tensor 默认的tensor类型是 torch.FloatTensor的简称
CPU Tensor 32bit floating point torch.FloatTensor
GPU Tensor torch.cuda.FloatTensor
8
数据类型转换 Tensor 类型的变量进行类型转换一般有两种方法
一、直接调用 long(), int(), double(), float(), byte() 等函数
二、Tensor 成员函数 .type() 中直接传入要转换的数据类型
如 a=torch.ones(3,5)
a.type() torch.FloatTensor
a.dtype torch.float32
b=a.type(torch.IntTensor)
b.type() torch.IntTensor
b.dtype torch.int32
单精度Float,32位机器上用4个字节存储,双精度doubleFloat,用8字节存储,能表示的数值范围不同,也就是能精确表示的位数不同,单精度小数点后面能精确到7位小数,双精度可精确到15位小数
三、将 a 转换为与 b 相同的类型
a.type_as(b)
numpy 和 tensor 的转换
一、tensor到numpy
a=torch.FloatTensor
b=a.numpy()
二、numpy到tensor
import numpy as np
a=np.ones([2,5])
b=torch.from_numpy(a)
tensor 张量和 list 相互转换
a是一个tensor
b=a.tolist()
a是一个list a = list ( range(1,6) ) [1,2,3,4,5]
b=torch.tensor(a) tensor([1,2,3,4,5])
CPU和GPU之间张量转换 Tensor.cuda() Tensor.cpu()
为了保险起见,项目代码中一般采取‘先判断,后使用’的策略
if torch.cuda.is_available():
inputs = tmp.cuda()
else:
inputs = tmp
torch.cuda.device_count() # 可以获得能够使用GPU的数量
python中的 type(),dtype,astype()
type() 返回数据结构类型,list,dict,numpy,ndarray等
dtype 返回数据元素的数据类型,int ,float等
astype() 改变np.array 中所有数据元素的数据类型
注:由于list ,dict 等可以包含不同的数据类型,因此不可调用dtype
np.array中的元素是同一数据类型,因此可以调用 dtype
能用dtype的才可以用astype()
torch.max(a,0) # 返回每一列中最大值的元素,且返回索引。。。返回的最大元素和索引,各是一个tensor,一起构成元组
torch.max(a,1) # 返回每一行中最大值的元素,且返回索引
torch.max()[0] # 只返回最大值的每个数
torch.max()[1] # 只返回最大值的索引
torch.max()[1].data # 只返回数据部分
torch.max()[1].data.numpy() # 数据转换为numpy
torch.max()[1].data.numpy().squeeze() # 数据中维度为1 的删除掉,,,挤压squeeze
a=torch.randn(2,3,4) 两个3*4
pow(2,4)=16 2^4=16
sum( iterable[,start] ) iterable 为可迭代对象,可以是list,可以是tuple
torch_x = torch.unsqueeze( test_data.test_data, dim=1 ).type(torch.FloatTensor)[:2000]/255
so 上面的式子是 shape from (2000,28,28)to (2000,1,28,28) ,取前2000个值, 值的范围从0-1
x=x.view(x.size(0),-1) # 将 x 开,第一维确定之后,第二维不用写
pytorch的运算单元叫做张量,多维数组(一维数组,向量
二维数组,矩阵
三阶张量,三维数组
。。。。。)
三阶张量相当于三个矩阵,每个矩阵又是一个二阶张量
一个张量,每个维度的大小,称为张量在这个维度的尺寸 Size
python的可视化库matplotlib的显示模式默认为阻塞模式(block)在plt.show()之后,如果不手动关闭图片,程序会暂停
使用plt.ion(),使matplotlib的显示模式转换为交互模式interactive,即使脚本中遇到plt.show()代码还是会继续执行
在plt.show()前一定要加plt.ioff(),如果不加,界面会一闪而过
plt.plot(x)或plt.imshow(x)是直接出图像,需要plt.show()后才能显示
plt.fgure() 第一个参数,图像编号或名称
在合并之前,tensor不能反向传播,variable可以反向传播
np.linspace(0,20,5) # [0,20) 五等分
np.arange(0,20,2) # [0,20) 步长为2
np.zeros(10,dtype=int) # 创建10个零元素的向量,dtype指定数据类型
np.zeros(10) # 未指定数据类型是float 64
np.full((3,5),121) # 创建全为指定值的数组 3*5全为121
ndarray=np.array([ i for i in range(10)) 输出 [ 0 1 2 3 4 5 6 7 8 9 ]
利用随机数种子使pytorch中的结果可以复现
torch.manual_seed(1)
torch.cuda.manual_seed(1)
numpy中,系统默认的数据类型是 np.float ,等价于np.float64
torch中,系统默认的数据类型是torch.float, 等价于torch.float32
pytorch中按元素乘是 . ,按矩阵乘是 @
一维卷积Conv1d ,常用于序列模型,自然语言处理模块
二维卷积Conv2d,常用于计算机视觉,图像处理领域,
三维卷积Conv3d
torchvision包的主要功能是数据的处理,导入和预览
首先加载数据集用 torchvision.datasets,且torchvision还包含了COCO、imageNet、CIFCAR等数据集
也可以定义张量的时候,指定设备
x = torch.Tensor([0,1,0,1], device=‘cuda‘)
以上是关于一些函数的主要内容,如果未能解决你的问题,请参考以下文章