自学内容网 自学内容网

11.20 深度学习-pytorch包和属性的基础语法

import torch

import numpy as np

def sci_close():

    # 关闭pytorch 数据打印出来时科学计数法

    torch.set_printoptions(sci_mode=False)

    pass

    return 0

def create_tensor():

    # 创建张量

    t1=torch.tensor(5) # 一阶张量 阶数看你传入的矩阵是多少阶的 这个是标量 不是一阶 一阶要加[] 加了[]才是多少阶

    t1.dtype # tensor张量里面的数据类型 只能是int float bool

    t1.shape # tensor张量的形状 标量的shape啥都没有

    t1.device # 数据运行的设备

    # 创建的时候也可以传入np数组 list

    # 创建的时候也可以传入参数 dtype 如果数据超出范围会自动变为最大范围的余数     设置tensor数据类型  tensor数据类型有..... 都是torch里面的数据类型int8.....跟numpy类似

    # 创建的时候可以指定数据运行的设备 传入参数device "cpu" 或者 "cuda" 不同设备上的数据无法运算

    t2=torch.tensor([[1,2,3],[300,22,11]],dtype=torch.int8,device="cpu")

    # print(t2.device)

    # 也可以使用 tensor.to("cpu") tensor.to("cuda") 返回一个新的运行在新设备上的tensor

    t3=t2.to("cpu")

    print(t3.device)

    # 查看cuda是否可用 返回布尔值

    bool1=torch.cuda.is_available()

    # 可以根据这个布尔值 设计一个 有显卡先用显卡 没显卡用CPU的程序

    # 也可以使用tensor.cuda() 直接返回一个在显卡上运行的新tensor

def choose_device():

    t1=torch.Tensor(3,2,device="cpu")

    if torch.cuda.is_available():

        t2=t1.cuda()

    else:

        t2=t1

    t2=t1

    torch.cuda.is_available() and t2=t1.cuda()


 

def create_Tensor():

    # 利用Tensor()直接创建特定形状的张量

    # 这个是大写的Tensor

    t1=torch.Tensor(5,4) #  创建 一个5行4列的二维tensor

    a=t1.dtype #

    b=t1.shape #

    # print(b)

    # 也可以在Tensor前面加数据类型 创建出来的tensor里面的数据就是对应的类型 位数不同

    tt2 = torch.FloatTensor(3, 3)

    tt3 = torch.DoubleTensor(3, 3)

    tt4 = torch.LongTensor(3, 3)

    tt5 = torch.ShortTensor(3, 3)

    print(t1)

# 创建线性和随机张量

def create_line_random_tensor():

    # 跟numpy的差不多 不过np变为了torch star stop step 不包括stop

    # 感觉torch就是集成了一个numpy在里面

    t1=torch.arange(1,10,step=2)  # 知道等差公差

    # print(t1)

    # 包含了stop

    t2=torch.linspace(1,10,4,dtype=torch.int8) # 知道等差的 个数

    # print(t2)

   

    # 等比数列 logspace  base 基数 这个是2的1次方开始 到2的10次方 step为元素个数n

    t3=torch.logspace(1,10,3,base=2)

    # 随机

    # 可以设置随机数种子 设置玩后可以获取一下一般记在心里

    torch.manual_seed(666)

    # 获取 返回了随机数种子

    r=torch.initial_seed()

    # 生成随机张量 rand真随机    randn随机出来来的符合标准正态分布 靠近中心的要大点

    t4=torch.rand(10,5)

    # print(t4)

    # 自己设置一个正太分布 来随机生成 传入均值和方差 和形状

    t5=torch.normal(2,1,(3,3))

    print(t5)

# 创建0-1张量 创建指定值张量 创建单位矩阵张量

def zero_one():

    # 创建全0 张量

    t1=torch.zeros(5,5)

    # print(t1)

    # 根据其他的tensor的形状来创建全0张量 zeros_like

    t2=torch.rand(2,3)

    # print(t2)

    t3=torch.zeros_like(t2)

    # print(t3)

    # 全1张量 函数名变为ones 也可以like

    t4=torch.ones(5,5)

    t6=torch.ones_like(t2)

    # print(t6,t4)

    # 创建指定值张量传入形状和 填充值

    t7=torch.full((3,3),666)

    # like

    t8=torch.full_like(t2,666)

    # print(t7,t8)

    # 创建单位矩阵张量 因为是方阵传入一个行就行

    t9=torch.eye(4)

    print(t9)

# dtype 转换

def change_dtype():

    t1=torch.rand(2,3)

    # tensor.type(torch数据类型) 返回一个新的          

    t2=t1.type(torch.int8)

    # 也可以用对应类型的api tensor.对应的api 直接变  跟cuda()方法一样 返回一个新的

    t3=t1.float()

    # 。。。。。。。。


 

if __name__=="__main__":

    # create_tensor()

    # create_Tensor()

    # create_line_random_tensor()

    # zero_one()

   

    pass






 


原文地址:https://blog.csdn.net/2401_86807530/article/details/143924099

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!