pytorch---1.基础知识

(从B站某个大佬搬过来的,在加上自己的一些笔记,仅供自己参考)
B站pytorch视频
第一课
什么是PyTorch?
PyTorch是一个基于Python的科学计算库,它有以下特点:

类似于NumPy,但是它可以使用GPU
可以用它定义深度学习模型,可以灵活地进行深度学习模型的训练和使用
Tensors
Tensor类似与NumPy的ndarray,唯一的区别是Tensor可以在GPU上加速运算。

Torch 自称为神经网络界的 Numpy, 因为他能将 torch 产生的 tensor 放在 GPU 中加速运算 (前提是你有合适的 GPU), 就像 Numpy 会把 array 放在 CPU 中加速运算. 所以神经网络的话, 当然是用 Torch 的 tensor 形式数据最好咯. 就像 Tensorflow 当中的 tensor 一样.

当然, 我们对 Numpy 还是爱不释手的, 因为我们太习惯 numpy 的形式了. 不过 torch 看出来我们的喜爱, 他把 torch 做的和 numpy 能很好的兼容. 比如这样就能自由地转换 numpy array 和 torch tensor 了(以下代码都是V1.0.1版本的)

from __future__ import print_function
import torch
#构造一个未初始化的5x3矩阵:
x = torch.empty(5, 3)
print(x)

构建一个随机初始化的矩阵:

x = torch.rand(5, 3)
print(x)

构建一个全部为0,类型为long的矩阵:

x = torch.zeros(5, 3, dtype=torch.long)
print(x)

从数据直接直接构建tensor:

x = torch.tensor([5.5, 3])
print(x)

也可以从一个已有的tensor构建一个tensor。这些方法会重用原来tensor的特征,例如,数据类型,除非提供新的数据。

x = x.new_ones(5, 3, dtype=torch.double)      # new_* methods take in sizes
print(x)

x = torch.randn_like(x, dtype=torch.float)    # override dtype!
print(x)                                      # result has the same size

得到tensor的形状:


print(x.size())
torch.Size([5, 3])
#注意
#``torch.Size`` 返回的是一个tuple

Operations

有很多种tensor运算。我们先介绍加法运算。

y = torch.rand(5, 3)
print(x + y)

另一种着加法的写法

print(torch.add(x, y))

加法:把输出作为一个变量

result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)

in-place加法

#adds x to y
y.add_(x)
print(y)

注意
任何in-place的运算都会以_结尾。 举例来说:x.copy_(y), x.t_(), 会改变 x

各种类似NumPy的indexing都可以在PyTorch tensor上面使用。

print(x[:, 1])

Resizing: 如果你希望resize/reshape一个tensor,可以使用torch.view

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)  # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())
torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])

如果你有一个只有一个元素的tensor,使用.item()方法可以把里面的value变成Python数值。

x = torch.randn(1)
print(x)
print(x.item())

更多阅读
各种Tensor operations, 包括transposing, indexing, slicing, mathematical operations, linear algebra, random numbers在 pytorch文档

Numpy和Tensor之间的转化
在Torch Tensor和NumPy array之间相互转化非常容易。

Torch Tensor和NumPy array会共享内存,所以改变其中一项也会改变另一项。

把Torch Tensor转变成NumPy Array

a = torch.ones(5)
print(a)
b = a.numpy()
print(b)

改变numpy array里面的值。

Ia.add_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值