zoukankan      html  css  js  c++  java
  • 一些函数

    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)       一个两行三列

                                                                                                                                                                                

  • 相关阅读:
    MySQL Community Server 8.0.16
    Python的编码规范
    Python 的语言特性
    spark笔记 环境配置
    C#委托实现工厂规则注入
    特性与元数据
    可输入的模糊搜索ComBox控件
    ASPX页面输出datatable的一种方法
    QRcode生成二维码,保存二维码图片到服务器
    SQL语句的随机值与行号,字符串拼接
  • 原文地址:https://www.cnblogs.com/DoctorZhao/p/13171829.html
Copyright © 2011-2022 走看看