pytorch的基础操作

import torch
import numpy as np
################################################tenson属性
test=torch.arange(9).reshape(3,3)
#数据类型datatype
print(test.dtype)
#形状
print(test.shape)
#大小(总数据量)可指定维度
print(test.size())
print(test.size(0))
#维度2维或几维
print(test.dim())
#梯度
print(test.grad)
#设备
print(test.device)
#元素总数
print(test.numel())
##################################################tenson的创建
#0tensor转py的标量
a=torch.tensor([1,2,3])
print(a.tolist())
#默认类型为整数形式
a=torch.tensor([1,2,3])
print(a)
#2.根据numpy创建
a_n=np.array([1,2,3])
a_t=torch.from_numpy(a_n)#默认类型为整数形式
a_b=torch.tensor(a_n)
print(a_t)
#1.直接根据列表来创建tensor
a=torch.tensor([1,2,3])#默认类型为整数形式
print(a)
#2.根据numpy创建
a_n=np.array([1,2,3])
a_t=torch.from_numpy(a_n)#默认类型为整数形式
a_b=torch.tensor(a_n)
print(a_t)
#3定义小数形式
p=torch.Tensor(2,3)#小括号形容的是形状 随机生成
print(p)
#4随机生成数据rand randn rand_like
a1=torch.randn(2,3)#里面是size  标准正太分布
print(a1)
b1=torch.rand(1,5)#在-1,1中随机抽数
print(b1)
# c1=torch.randn_like()#里面填另一个tensor 生成形状一样满足标准正态分布
#5利用range生成
c=torch.arange(1,12,1)#起始 终止 步长
print(c)
#ones_like 和 zeros_like 里面填另一个tensor
#ones 和 zero里面填 size
l=torch.zeros_like(torch.arange(0,12,dtype=torch.float64).reshape(3,4))#默认int形式
l1=torch.zeros(2,3)
print(l)
print(l1)
#生成一个空向量(随机数)
p=torch.empty(4,5)#里面是size
print(p)
#torch.linspace(0,10,steps=10)
m=torch.linspace(0,10,steps=10)#生成一个1-10之间等间隔维数为1 数据为10的tensor
print(m)
#eye
v=torch.eye(3,3)#创建单位矩阵 主对角线都为1
print(v)
#################################################tensor的变形
test=torch.arange(9).reshape(3,3)
#拉平
test1=test.flatten()
print(test1)
#rshape view改变形状
test1=test1.reshape(3,1,3)
print(test1)
#将输入张量形状中的一去除(3,1,3)->(3,3)
e=torch.squeeze(test1)
print(e)
#增加一个维度1(3,3)->(3,1,3)
e=torch.unsqueeze(e,1)#在1维后加一维度
print(e)
print(e.shape)
####################################################索引和切片
test=torch.arange(9).reshape(3,3)
print(test[1:,1:])
###########################################tensor的拼接和拆分
test=torch.arange(9).reshape(3,3)
test2=test*2
#在给定维度上对输入的张量进行连接操作
print(torch.cat((test,test2),dim=1))#在第一个维度(3,3) -》(3,6)
#沿着一个新纬度对输入张量序列进行连接,在新维度拼接张量,将原始数据维度他们放在一个一位张量里面
print(torch.stack((test,test2),dim=1))#先维度加1 再在该维度相加
#按块大小拆分张量为多部份,每部分的数量=块的值,除不尽的取余数,返回一个元组tuple
test=torch.arange(16).reshape(4,4)
print(torch.split(test,2,dim=0))#在那个维度拆成几部分
print(torch.chunk(test,2,dim=0))#按快数拆分张量,块的值为多少,就分成多少块
#tensor换位和置换
a=torch.arange(9).reshape(3,3)
#转置
print(a.T)
print(torch.t(a))
print(a.permute(1, 0))#交换维度
###########################################################矩阵之间的计算
#相加(广播机制)
a=torch.arange(12).reshape(3,4)
a=a+a
print(a)
#相点乘
print(a*a)
#做矩阵乘法
# print(a@a)
# print(torch.matmul(a,a))
# print(torch.mm(a,a))
#求自然底数
a=torch.exp(a)
print(a)
#求范数
a=torch.arange(12).reshape(3,4)
print(a.norm.item())
#广播机制
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
print(a+b)
##########################################################求导
x=torch.tensor([1.,2.,3.,4.,5.],requires_grad=True,dtype=torch.float64)
print(x.requires_grad)#指示张量是否需要计算梯度
print(x.grad)#x的梯度
print(x.grad_fn)#grad_fn: grad_fn用来记录变量是怎么来的
y=torch.sum(x**2)
print(y)
print(y.item())
print(y.grad_fn)
y.backward()#反向求导
print(x.grad,x.grad_fn)
#梯度清0
x.grad.zero_()
print(x.grad)
##############################################################笔记
torch.normal(0,1,(3,4))#生成正态分布随机的tensor
#对于nan元素的处理
import pandas as pd
data = {'gender': ['male', 'female', 'male', 'female'],
        'age': [25, 30, 15, 35]}
df = pd.DataFrame(data)
print(df)
dummies = pd.get_dummies(df,dummy_na=True)#对于文字元素自动分类转化为False和true类型
df = pd.concat([df, dummies], axis=1)
df.drop(columns="gender",inplace=True)
print(df)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值