【Python学习笔记】tensor基础

【Python学习笔记】tensor基础

  • 1. 通过多种方法生成Tensor
  • 2. tensor相关数据查看
  • 3. tensor和numpy之间转化
  • 4. GPU的相关内容

1. 通过多种方法生成Tensor

# torch learning
x1 = torch.empty(4, 6, dtype=torch.float16)     # 未被初始化
x2 = torch.randn(3, 5)                          # 正太分布,均值0,方差1
x3 = torch.rand(3, 5)                           # 0~1之间
x4 = torch.zeros(3, 5).float()                  # 全0
x5 = torch.ones(3, 5).float()                   # 全1

x6 = torch.tensor([[1, 2],[3, 4]])              # 自定义
x7 = x4.new_ones(3, 5, dtype=torch.double)      # 通过其他数据集构建
x8 = torch.rand_like(x5, dtype=torch.float)

【Python学习笔记】tensor基础_第1张图片

2. tensor相关数据查看

# transform tensor to data
x2.data  # 返回相同数据的Tensor
x2.grad  # 梯度
x2[1][1].item()  # 将其中一个张量转化为标量
x2.size()
x2.shape
x2.numel()  # 张量中元素的总数
dir(x2)  # y2的函数

【Python学习笔记】tensor基础_第2张图片
【Python学习笔记】tensor基础_第3张图片

3. tensor和numpy之间转化

# conversion between numpy with tensor
print('x2 to numpy:\n', x2.numpy())
y2 = np.ones((2, 3))
print('y2:\n', y2)
print('y2 to tensor:\n', torch.from_numpy(y2))

【Python学习笔记】tensor基础_第4张图片

4. GPU的相关内容

if torch.cuda.is_available():
    device = torch.device('cuda')
    y3 = torch.randn((2, 3), device=device)
    xy3 = y3.to(device)
    
    print('xy3 in gpu is:', xy3)
    print('xy3 in cpu is:', xy3.to('cpu', torch.double))
    # GPU的tensor转numpy。需要通过cpu做桥梁
    print('xy3 in numpu is:', xy3.cpu().data.numpy())
else:
    print('device is cpu')

【Python学习笔记】tensor基础_第5张图片

# 数据在GPU和CPU上的迁移
x6.cuda(device)
x6.cuda(0)
x6.device
y3.device
x6.to(y3.device)

【Python学习笔记】tensor基础_第6张图片

# 查看GPU的信息
torch.cuda.device_count()               # 设备的GPU数量
torch.cuda.get_device_name(0)           # 查看GPU的型号
torch.cuda.current_device()             # 当前设备索引
torch.cuda.get_device_capability(0)     # 当前设备计算能力
torch.cuda.get_device_properties(0)     # 当前设备综合性能

【Python学习笔记】tensor基础_第7张图片

你可能感兴趣的:(Python学习笔记,python,学习,numpy)