码迷,mamicode.com
首页 > 其他好文 > 详细

一些函数

时间:2020-06-29 13:47:08      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:相互   相同   包含   删除   conv2   linear   argument   执行   squeeze   

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‘)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

 

一些函数

标签:相互   相同   包含   删除   conv2   linear   argument   执行   squeeze   

原文地址:https://www.cnblogs.com/DoctorZhao/p/13171829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!