Pytorch(二)框架学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36022260/article/details/82990426

Tensor

配套代码:https://download.csdn.net/my

导入torch 包


from __future__ import  print_function
import torch

构建一个未初始化的5x3的矩阵

x = torch.empty(5,3)
print(x)
tensor([[-1.1159e+09,  2.5644e-43, -1.1159e+09],
        [ 2.5644e-43,  0.0000e+00,  0.0000e+00],
        [ 0.0000e+00,  0.0000e+00,  0.0000e+00],
        [ 0.0000e+00,  0.0000e+00,  0.0000e+00],
        [ 2.8181e+20,  1.5134e-43,  0.0000e+00]])

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

y = torch.rand(5,3)
print(y)
tensor([[0.8610, 0.6330, 0.2864],
        [0.6327, 0.8306, 0.1751],
        [0.2504, 0.4190, 0.9789],
        [0.0831, 0.1019, 0.7823],
        [0.0430, 0.2509, 0.7078]])

构造零矩阵类型为long

z = torch.zeros(5,3,dtype=torch.long)
print(z)
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

直接从数据构造Tensor

x = torch.tensor([5.3,3.3])
print(x)
tensor([5.3000, 3.3000])

根据现有Tensor创建Tensor

x = x.new_ones(5,3,dtype=torch.float)
print(x)
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]])

得到Tensor的大小

size = x.size()
print(size)
torch.Size([5, 3])

注意:

torch.Size 实际上是一个元组,因此它支持所有元组操作。

Operations

矩阵相加 1.:

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

Out:

tensor([[1.8059, 1.7178, 1.2949],
        [1.2252, 1.0031, 1.6399],
        [1.0712, 1.6112, 1.6976],
        [1.3032, 1.2609, 1.5103],
        [1.0634, 1.9855, 1.4810]])

矩阵相加 2.:

result = torch.add(x,y)
print(result)

Out:

tensor([[1.8059, 1.7178, 1.2949],
        [1.2252, 1.0031, 1.6399],
        [1.0712, 1.6112, 1.6976],
        [1.3032, 1.2609, 1.5103],
        [1.0634, 1.9855, 1.4810]])

矩阵增加 3

y.add_(x)
print(y)

OUT:

tensor([[1.8059, 1.7178, 1.2949],
        [1.2252, 1.0031, 1.6399],
        [1.0712, 1.6112, 1.6976],
        [1.3032, 1.2609, 1.5103],
        [1.0634, 1.9855, 1.4810]])

注意:

任何使原Tensor变形的操作都是用_。后固定的。例如:x.copy_(y)x.t_(),将改变x

提供输出Tensor作为参数

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

可以使用标准的Numpy索引

# 矩阵第二列 
print(y[:,1])

OUT:

tensor([1.7178, 1.0031, 1.6112, 1.2609, 1.9855])

调整大小:调整大小或重塑Tensor使用torch.view()

x = torch.randn(4,4)
y = x.view(-1,8)
print(y,y.size())

OUT:

tensor([[ 0.1154, -0.6524,  0.9156, -0.6724, -1.4680,  0.0348,  0.0317,  0.1726],
        [ 1.1404,  0.5799, -1.5505, -0.1009,  0.1317, -0.5563,  0.9024,  1.1492]]) torch.Size([2, 8])

如果你有一个元素张量,用于.item()获取值作为Python数字

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

OUT:

tensor([0.5729])
0.5729162096977234

Numpy Bridge

将Torch Tensor转换为NumPy阵列(反之亦然)是一件轻而易举的事。

Torch Tensor和NumPy阵列将共享其底层内存位置,更改一个将改变另一个。

将Tensor 转化为Numpy数组

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

OUT:

tensor([0.1917, 0.5463, 0.3016, 0.2616, 0.5205])
[0.1916883  0.5463207  0.30155057 0.2615763  0.5205126 ]

Torch Tensor和NumPy阵列将共享其底层内存位置,更改一个将改变另一个,

了解numpy数组的值如何变化。

a.add_(1)
print(a)
print(b)

OUT:

tensor([1.1917, 1.5463, 1.3016, 1.2616, 1.5205])
[1.1916883 1.5463207 1.3015506 1.2615763 1.5205126]

将NumPy数组转换为Torch Tensor

了解更改np阵列如何自动更改Torch Tensor

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a,1,out=a)
print(a)
print(b)

OUT:

[2. 2. 2. 2. 2.]
tensor([2., 2., 2., 2., 2.], dtype=torch.float64)

猜你喜欢

转载自blog.csdn.net/qq_36022260/article/details/82990426