一些函数

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

numpy中的ndarray 调用不了size()函数,只能用 .size,不带括号

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 开,第一维确定之后,第二维不用写,,,,也可以第一个参数是 -1,将其中一个尺寸设置为 -1,表示机器内部自己计算,但同时只能有一个 -1

view 就是用来改变tensor形状的,, -1 表示会自适应调整剩余的维度

tensor_1.view_as(tensor_2)      将tensor_1 的形状改成与 tensor_2 一样

                                                                                                                                                                                                                                    

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

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Tensor 同zeros ,ones, randn这些 torch.Tensor() 是python的类,是默认张量类型torch.FloatTensor()的别名,生成单精度浮点张量

tensor(2,3)

a=torch.Tensor( [ [ [1,2,3],[4,5,6] ] ] ) 

a.size()       torrch.Size(1,2,3)       一个两行三列

                                                                                                                                                                            

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