首页 > 其他分享 >01 torch基础

01 torch基础

时间:2024-10-10 15:03:21浏览次数:10  
标签:01 torch 基础 张量 cuda device GPU CUDA

学习参考: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]
    ]
])

  第一维,第一个“[”,包含1个元素;第二维,包含2个元素;第三维:包含4个元素。

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

  

 

    

  

  

 

标签:01,torch,基础,张量,cuda,device,GPU,CUDA
From: https://www.cnblogs.com/Makerr/p/18456372

相关文章

  • 实验二 C语言分支与循环基础应用编程-1
    task1.c #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));//以当前系统时间作为随机种子cnt=0;while(cnt<N){rando......
  • JavaScript基础
    目录JavaScript基础day2JavaScript简介和体验JavaScript书写位置JavaScript注释和结束符JavaScript输入和输出语句和字面量字面量变量变量的基本使用交换两个变量案例变量的本质和命名规则变量拓展-var和let的区别变量拓展-数组的基本使用常量数据类型数据类型数据类型......
  • Curl一些基础用法
    这几天遇到一个很好用的工具,curl以下是curl的一些基础用法。url是一个非常强大的命令行工具,用于传输数据,支持多种协议,如HTTP、HTTPS、FTP等。以下是一些基本的curl语法和常用命令:基本语法curl[选项][URL...]常用选项-v,--verbose:详细模式,显示通信的整个过程。-s,--s......
  • Camstar 电子套件基础数据导入导出Export/Import
    前提准备:你的共享目录CamstarUploads弄好了,参考https://www.cnblogs.com/CarryYou-lky/p/16133849.html     ......
  • E62 树形DP P8677 [蓝桥杯 2018 国 A] 采油
    视频链接:  P8677[蓝桥杯2018国A]采油-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DP+贪心O(nlogn)#include<bits/stdc++.h>#defineN100010usingnamespacestd;vector<int>e[N];intn,B[N],S[N],f[N],len;structman{intb,s;};boolcmp(manx,......
  • 实验1 现代c++基础编程
    任务1:源代码task1.cpp//现代C++标准库、算法库体验//本例用到以下内容://1.字符串string,动态数组容器类vector、迭代器//2.算法库:反转元素次序、旋转元素//3.函数模板、const引用作为形参#include<iostream>#include<string>#include<vector>#include......
  • JAVA基础之九-泛型(通用类型)
    总体而言,泛型(通用类型)是一个好东西,它是一个工程上起到好处的东西,对于性能、安全等并没有什么帮助。在java工程上,泛型属于必须掌握的,理由如下:1.各种源码中基本上都有泛型,无论是java基础源码还是Spring或者阿帕奇的。不掌握这个,你读不懂。你没有方法饶过它2.有了泛型,某种程度上......
  • 安装 Anaconda、PyTorch(GPU 版)库与 PyCharm
    Anaconda是一款巨大的Python环境集成平台,里面包含了Python解释器、JupyterNotebook代码编辑器以及很多的第三方库,所以安装Anaconda后我们无需再安装Python解释器,非常方便。一、安装Anaconda1.卸载Anaconda(可选)如果我们原来的电脑上安装过Anaconda,为了避免重复安......
  • USB 概述及协议基础
    《圈圈教你学USB》第1章学习笔记1USB是什么?1)USB(UniversalSerialBus,通用串行总线)2USB的特点1)USB协议版本与速度:来源:https://www.usbzh.com/article/detail-199.html2)开发USB常用网站:https://www.usb.org3USB的拓扑结构USB是主从结构,主机为Hos......
  • Vulkan进阶系列0 - Raytracing 基础
    一:概述    Vulkan的光线追踪是一种现代图形技术,用于实现更加逼真的高质量渲染效果。通过使用Vulkan的光线追踪扩展:VK_KHR_ray_tracing_pipeline和VK_KHR_acceleration_structure,程序员可以更加高效的模拟光线的传播,反射和折射,并能够跟踪光线在场景中的传播路径,计......