01 torch基础

学习参考:https://deeplizard.com/

预备知识

  • GPU是实现并行计算的硬件,CUDA是一个为开发人员提供api的软件层。
  • PyTorch里面内置CUDA,无需额外下载,所需要的是GPU
  • 处理简单任务用CPU更合适,因为移入GPU成本很高

CUDA与PyTorch的结合使用

  • PyTorch利用CUDA,即在GPU上执行计算,只需要将张量对象调用CUDA来指示PyTorch完成
import torch
t = torch.tensor([1, 2, 3])
print(t.device)  # 输出:cpu

  默认情况下,以这种方式创建的tensor对象执行任何操作都在CPU上执行

  • 张量移动到GPU上
> t = t.cuda()
> t
tensor([1, 2, 3], device='cuda:0')
  • 在CPU和GPU上都可以运行,动态检测有无GPU
import torch

# 检查 CUDA 是否可用,如果可用就使用 GPU,否则使用 CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# 将张量放在合适的设备上
t = torch.tensor([1, 2, 3], device=device)

print(t)
print(f"Tensor is on: {t.device}")

这段代码"cuda" if torch.cuda.is_available() else "cpu"是py中三元组,等同于

# 检查 CUDA 是否可用
if torch.cuda.is_available():
    device_type = "cuda"  # 如果有 CUDA 可用,使用 GPU
else:
    device_type = "cpu"   # 否则,使用 CPU

# 根据 device_type 创建设备对象
device = torch.device(device_type)

# 打印设备类型
print(f"Using device: {device}")

张量(tensor)——深度学习的数据结构

什么是张量?

  神经网络的输入、输出和转换都是用张量来表示。张量是深度学习的主要数据结构

  张量和n维数组是一个概念

张量的属性

  Rank,Axes,Shape-秩,轴和形状

  张量的秩---张量中存在的维数。

  秩和索引---张量的秩是几,则需要几个索引才能访问张量中的特定元素

  张量的---张量的特定维度,Axis。每个轴的长度告诉我们每个轴上有多少个索引可用。

  pytorch中,张量大小和张量形状是一个概念

  张量的形状,张量的重塑(reshape)。

 

  例,确定张量t的形状?

t = torch.tensor([
    [
         [2,3,4,4] 
        ,[2,3,4,5]
    ]
])

  output:torch.Size([1,2,4])

  ⚠️⚠️:关于维度的理解:关于第一维,看第一个中括号包含几个元素(元素以逗号分隔),第n维,就看第n个中括号里包含几个元素。

     换个角度理解,【张量中有几个连续的中括号就有几个维度】,上述张量中有3个连续的中括号,即是三维张量。【将torch.Size(1,2,4)中的数从右向左看】,最内层中扩号有4个元素,对应torch.Size中的4; 依次类推,第二层括号里有[2,3,4,4]和[2,3,4,5],是2个元素,对应torch.Size中的2 ;第三层括号里有一个“[[”元素,所以为1。

 

 

    

  

  

 

posted @ 2024-10-10 14:59  Makerr  阅读(7)  评论(0编辑  收藏  举报