【pytorch基本操作】

# -*- coding:utf-8 -*-
import torch
import numpy as np



#根据torch.tensor生成张量
print(torch.tensor(1))
print(torch.tensor((2,3)))
print(torch.tensor([2,3]))

#根据torch.Tensor生成张量
print(torch.Tensor(3))

print(torch.Tensor(3,4))

print(torch.Tensor((3,4)))
print(torch.Tensor([3,4]))

#张量和NumPy数组的相互转化
#将Numpy数组转化为张量
F=np.ones((3,4))
print(F)
print(torch.as_tensor(F))
print(torch.from_numpy(F))

#将张量转化为数组 .numpy()
print(torch.as_tensor(F).numpy())

torch.manual_seed(100)
A=torch.normal(mean=0.0,std=torch.tensor(1.0))
print(A)

C=torch.ones(2,3)
print(C)
D=torch.rand_like(C)  #rand_like生成尺寸一样的张量
print(D)

E=torch.randn(3,3)
print(E)
F=torch.randn_like(E)
print(F)

G=torch.randperm(10)  #生成随机生成的从0到9的一维的张量
print(G)
H=torch.arange(start=0,end=10,step=2)
print(H)
J=torch.linspace(start=1,end=10,steps=5) #生成从1到10等间距的5个数,包括1和10
print(J)

#torch.zeros(3,3)
#torch.ones(3,3)
#torch.eye(3,3)
#torch.full((3,3),fill_value=0.25)
#torch.empty(3.3)
#print(torch.empty(3.3))   #生成一个空张量看,没有赋值


##############################

#张量操作
##############################

#1 改变张量的形状
A=torch.arange(12.0)
print(A)
print(A.reshape(3,4))
print(A.reshape(-1,3))
print(A.resize_(2,6))
print(A)

print("*"*90)
#2 增加维度和减少维度
A=torch.arange(12).reshape(2,6)
print(A.size())
B=torch.unsqueeze(A,dim=0)  #在第一维上面加上一个维度
print(B.size())
C=B.unsqueeze(dim=3)
print(C.size())
D=C.squeeze(dim=3)  #squeeze只能去除维度为1的地方
print(D.size())
E=torch.squeeze(C,dim=3)
print(E.size())

print("#"*90)
A=torch.arange(10)
B=A.expand(2,-1)
print(A)
print(A.size())
print(B)
print(B.size())
print("@"*100)

A=torch.arange(12).reshape(1,3,4)
print(A)
print(A[0].size())
print(A[:,:2,:])
print(A[:,:2,:].size())


##############################
#张量拼接和拆分
##############################
print("*"*100)

A=torch.arange(8).reshape(2,4,1)
print(A)
B=torch.linspace(0,10,8).reshape(2,4,1)
print(B)
#在0维度上拼接张量 在第0个维度上拼接
C=torch.cat((A,B),dim=0)
print(C.size())
#在1维度上拼接张量,在第1维度上拼接
C=torch.cat((A,B),dim=1)
print(C.size())
#coding:utf-8
import torch

#张量的基本运算
#元素的计算
A=torch.arange(6.0).reshape(2,3)
B=torch.linspace(10.0,20.0,steps=6).reshape(2,3)
print("A=",A)
print("B=",B)
print("A*B=",torch.mul(A,B))
print("A*B=",A*B)
print(torch.eq(torch.mul(A,B),A*B))
print("A/B=",A/B)

#矩阵的转置
C=torch.t(A)
print("C= ",C)
print("*"*100)

#矩阵相乘 torch.matmul针对高维度后面两个进行矩阵乘法,torch.mm只针对两个维度
A=torch.arange(6.0).reshape(2,3)
B=torch.linspace(10.0,20.0,steps=6).reshape(3,2)
print(torch.matmul(A,B).size())
print(torch.mm(A,B).size())

#函数作用
#计算两个tensor的矩阵乘法,torch.bmm(a,b),tensor a 的size为(b,h,w),tensor b的size为(b,w,h),注意两个tensor的维度必须为3.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值