# tensors(张量)
# Tensors类似于Numpy的ndarrays,同时Tensors可以使用GPU进行计算
from __future__ import print_function
import torch
# 构造一个5x3的矩阵,不初始化
x = torch.empty(5,3)
print(x)
"""
tensor([[9.6429e-39, 9.2755e-39, 1.0286e-38],
[9.0919e-39, 8.9082e-39, 9.2755e-39],
[8.4490e-39, 1.0194e-38, 9.0919e-39],
[8.4490e-39, 9.6429e-39, 1.0653e-38],
[9.6429e-39, 1.0745e-38, 9.6429e-39]])
"""
# 构造一个随机初始化的矩阵
x = torch.rand(5,3)
print(x)
"""
tensor([[0.9465, 0.4589, 0.4536],
[0.7979, 0.1757, 0.0958],
[0.0453, 0.6282, 0.7068],
[0.3025, 0.5211, 0.8735],
[0.8787, 0.6387, 0.7189]])
"""
# 构造一个矩阵全为0,而且数据类型是long
x = torch.zeros(5,3,dtype=torch.long)
print(x)
"""
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
"""
# 构造一个张量,直接使用数据
x = torch.tensor([5.5,3])
print(x)
"""
tensor([5.5000, 3.0000])
"""
# 创建一个基于已经存在的tensor
x = x.new_ones(5,3,dtype=torch.double)
print(x)
"""
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
"""
a = torch.randn_like(x,dtype = torch.float)
print(x)
"""
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=torch.float64)
"""
print(x.size()) # 获取维度信息
# torch.Size([5, 3])
# 注意:torch.size是一个元组,所以它支持左右的元组操作
# 操作
# 加法:方式一
y = torch.rand(5,3)
print(x + y)
"""
tensor([[1.5941, 1.5211, 1.8609],
[1.1351, 1.4910, 1.4718],
[1.8471, 1.1748, 1.2307],
[1.5962, 1.6199, 1.4634],
[1.8209, 1.5574, 1.0402]], dtype=torch.float64)
"""
# 加法:方式2
print(torch.add(x,y))
# 加法:提供另外一个输出tensor作为参数
result = torch.empty(5,3)
torch.add(x,y,out = result)
print(result)
"""
tensor([[1.3855, 1.8855, 1.2875],
[1.6356, 1.5559, 1.9643],
[1.6473, 1.9454, 1.3411],
[1.0081, 1.3039, 1.2931],
[1.6107, 1.5697, 1.3384]])
"""
# 加法:将x加到y上
y.add_(x)
print(y)
# 注意:任何使张量会发生变化的操作都有一个前缀 ‘’。例如:x.copy(y), x.t_(), 将会改变 x.
# 可以使用标准的numpy类似的索引操作
print(x[:,1]) # tensor([1., 1., 1., 1., 1.], dtype=torch.float64)
# 改变大小:如果想改变一个tensor的形状或者大小,可以使用torch.view:
x = torch.randn(4,4)
y = x.view(16)
z = x.view(-1,8) # -1是根据给出的另外一个维度来推断,因为16个元素,一个维度为8,另一个维度为2
print(x.size(),y.size(),z.size())
# torch.Size([4, 4]) torch.Size([16]) torch.Size([2, 8])
# 如果你有一个元素tensor,使用.item()来获得这个value
x = torch.randn(1)
print(x) # tensor([-0.2877])
print(x.item()) # -0.28765085339546204
pytorch学习-张量
最新推荐文章于 2020-07-19 21:04:27 发布