pytorch基本语法

Pytorch基本语法

Pytorch 是一个基于NUMPY的科学计算包,提供强大的GPU强大功能的能力

1. 创建矩阵的操作

1.1 创建一个没有初始化的矩阵
x = torch.empty(5, 3)
x
# 输出结果
"""
tensor([[9.2755e-39, 1.0561e-38, 4.5919e-39],
        [5.1429e-39, 4.9592e-39, 8.9082e-39],
        [8.9082e-39, 1.0194e-38, 9.1837e-39],
        [4.6837e-39, 9.9184e-39, 9.0000e-39],
        [1.0561e-38, 1.0653e-38, 4.1327e-39]])
"""

1.2 创建一个有初始化的矩阵
x = torch.rand(5, 3)
x
# 输出结果
"""
tensor([[0.6994, 0.8182, 0.5483],
        [0.4059, 0.2710, 0.2547],
        [0.6139, 0.8456, 0.7267],
        [0.1269, 0.2007, 0.3993],
        [0.3319, 0.1059, 0.7489]])
"""
1.3 创建一个全零矩阵并可指定数据元素的类型为long
x = torch.zeros(5, 3, dtype=torch.long)
x
# 输出结果
"""
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])
"""

2. 张量

2.1 直接通过数据创建张量
x = torch.tensor([2.5, 3.5])
x
# 输出结果
"""
tensor([2.5000, 3.5000])
"""
2.2 通过已有的张量创建相同的新张量
# 通过news_methods方法得到一个新张量
x = x.new_ones(5, 3, dtype=torch.double)
print(x)
# 采用随机初始化的方法为之赋值
y = torch.rand_like(x, dtype=torch.float64)
y
# 输出结果
"""
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
tensor([[0.3504, 0.0446, 0.4382],
        [0.3618, 0.6987, 0.5454],
        [0.7959, 0.3712, 0.4525],
        [0.5551, 0.0660, 0.7350],
        [0.5212, 0.5692, 0.2077]], dtype=torch.float64)
"""
2.3 得到张量的尺寸形状 返回的是元组类型
x.size()
y.size()# x, y为2.2中x, y
a, b = x.size()
print(x)
print(y)
print(a, b)
# 输出结果
"""
torch.Size([5, 3])
torch.Size([5, 3])
5 3
"""
2.4 用类似于numpy的方式对张量进行操作
# 切片
print(x[:, 1])
print(x[:, :2])
# 输出结果
"""
tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
tensor([[1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.],
        [1., 1.]], dtype=torch.float64)
"""
2.5 改变张量形状(需保证数据元素总数量不变)
x = torch.randn(4, 4)
y = x.view(16)
# -1代表自动匹配个数
z = x.view(-1, 8)
print(x.size(), y.size(), z.size())
# 输出结果
"""
torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
"""
2.6 如果张量中只有一个元素,可以用.item()将其取出,作为一个python number
x = torch.randn(1)
print(x)
x.item()
# 输出结果
"""
tensor([-1.7955])
-1.7955442667007446
"""

3. Torch Tensor和numpy array之间的相互转换

3.1 转换成array
# 内存空间一样
a = torch.ones(5)
print(a)
b = a.numpy()
b
# 输出结果
"""
tensor([1., 1., 1., 1., 1.])
array([1., 1., 1., 1., 1.], dtype=float32)
"""
3.2 其中一个进行加法操作,另一个也随之操作
a.add_(1)
print(a,b)
# 输出结果
"""
tensor([2., 2., 2., 2., 2.]) [2. 2. 2. 2. 2.]
"""
3.3 转换成tensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a, b)
# 输出结果
"""
[2. 2. 2. 2. 2.] tensor([2., 2., 2., 2., 2.], dtype=torch.float64)
"""
3.4 tensor可以用.to()方法将其移动到任意设备上
if torch.cuda.is_available():
    # 定义一个设备对象,这里指定CUDA, 即使用GPU
    device = torch.device("cuda")
    # 直接在GPU上面创建一个Tensor
    y = torch.ones_like(x, device=device)
    # 将在CPU上面的x张量移动到GPU上面去
    x = x.to(device)
    # x和y都在GPU上面,才能支持加法运算
    z = x + y
    # 此时张量在GPU上面
    print(z)
    print(z.to("cpu", torch.double))
# 输出结果
"""
tensor([-0.7955], device='cuda:0')
tensor([-0.7955], dtype=torch.float64)
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值