Pytorch 0.4.0:可以通过三种方式在 CUDA 设备上创建张量。他们之间有什么区别吗?

2024-02-16

我第三条路失败了。t3仍在CPU上。不知道为什么。

a = np.random.randn(1, 1, 2, 3)

t1 = torch.tensor(a)
t1 = t3.to(torch.device('cuda'))

t2 = torch.tensor(a)
t2 = t2.cuda() 

t3 = torch.tensor(a, device=torch.device('cuda'))

这三种方法都对我有用。

在 1 和 2 中,您在 CPU 上创建一个张量,然后在使用时将其移动到 GPU.to(device) or .cuda()。他们在这里是一样的。

但是,当您使用.to(device)您可以通过设置显式告诉 torch 移动到特定 GPU 的方法device=torch.device("cuda:<id>"). with .cuda()你必须做.cuda(<id>)移动到某个特定的 GPU。


那为什么会有这两种方法存在呢?

.to(device)在0.4中引入,因为它更容易声明device代码顶部的变量为

device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")

and use .to(device)到处。这使得从 CPU 切换到 GPU 变得非常容易,反之亦然

在此之前,我们必须使用.cuda()你的代码将有if检查cuda.is_available()无处不在,这使得 GPU/CPU 之间的切换变得很麻烦。


第三种方法不在CPU上创建张量,直接将数据复制到GPU,效率更高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytorch 0.4.0:可以通过三种方式在 CUDA 设备上创建张量。他们之间有什么区别吗? 的相关文章

随机推荐

  • 在类中使用#pragma pack

    我们可以在上课前使用 pragma pack 吗 pragma 这里的意义是什么 我知道它用于向编译器提供有关实现的信息 但是如果我们将它与类一起使用怎么办 它有exact对类的影响与对结构的影响相同 影响数据成员的对齐 实际上在课堂上使用
  • 在另一个 .cs 文件类中使用一个 .cs 文件类中的方法

    我有 2 个 cs 文件 每个文件中都有一个类 如何在 Form2 cs 内的另一个类中调用 Form1 cs 中的类中的方法 看起来像这样 Form1 cs public partial class Class1 ClassContain
  • 如何使用相同的代码将 unicode 文本写入 python 2 和 3 中的文件?

    我正在尝试编写一个可以通过 python 2 和 3 运行的程序 它从网站读取字符并写入文件 我已经导入了unicode literals来自 未来 直接尝试编写一个如下所示的字符串 txt u his u2026 n 将导致 Unicod
  • 适用于 Web 应用程序的 3D 散点图

    我正在寻找用于 Web 应用程序的散点图 3D 组件 现在我正在使用数学图 http jmathtools berlios de doku php 在 Java Applet 内 生成如下内容 替代文本 http jmathtools be
  • 由 Array.prototype.fill() 填充的数组的奇怪行为

    我遇到了一些我不明白的数组 事实上 我创建了一个数组 并用空子数组填充以获得二维矩阵 但是当我操作数组时 它的行为并不像我预期的那样 var arr new Array 5 arr fill arr 2 push third rank it
  • Pandas Dataframe 按列排序[重复]

    这个问题在这里已经有答案了 我有一个 Python Pandas 数据框 df 有 2 列 我想按第二列对 df 进行排序 Kappa prod Angle 0 0 004511 5 457840 1 0 003977 5 312861 2
  • DockPanel.Dock="Right" 不适用于最大化窗口上的单个控件?

    我正在使用 DockPanel Dock 将控件停靠在特定位置 即左 右 问题是我的控件没有根据 DockPanel Dock 位置停靠 下面是单个控件的代码DockPanel Dock Right
  • 为什么需要 PrintWriter?

    我真的很困惑各种 io 类的用途 例如 如果我们有 BufferedWriter 为什么我们需要 PrintWriter BufferedReader reader new BufferedReader new FileReader fil
  • array_agg() 的替代品?

    有没有 PostgreSQL 的替代品array agg 函数 以便它不会返回以下格式的值 x y z 我可以让它返回吗 x y z In PostgreSQL 9 0或稍后使用string agg val https www postgr
  • wglShareLists 失败并出现错误 6:ERROR_INVALID_HANDLE 句柄无效

    我尝试在两个类之间共享 HPBUFFERARB TGLForm 和 TGLForm2 我尝试过 FBO 但有一个旧的 Borland Builder 6 版本 我无法使用 FBO 进行管理 我的目标是在两个 openGL 窗口中显示相同的缓
  • CSS 浮动页脚

    我想制作一个保留在可视窗口底部的页脚 除非当您调整窗口大小时它会与内容相抵触 我试过 底部 0 位置 绝对 但是当窗口较小时 页脚会妨碍 我相信这会做你想要的 CSS 布局 100 高度 包含页眉和页脚 http www xs4all nl
  • 按组顺序填充 NA 值

    我正在尝试填充数据集中的一些值 我的数据的简化版本如下 gt example df Date GROUP value 157 2018 01 31 10180 3 464 158 2018 02 28 10180 3 413 159 201
  • 将 Javascript 应用程序转换为 Windows 应用程序

    除了Adobe Air还有其他解决方案吗 我听说 V8 有点东西 只是现在没有时间 用另一种语言编写整个应用程序 然后编写 2 倍以上的代码 也许你可以使用jsc 从命令行编译 JScript 代码 http msdn microsoft
  • 如何在 Azure 中允许 URL 编码路径段

    我有一个在 Azure 中运行的 ASP NET 6 MVC 应用程序 我有一个控制器 其动作如下 HttpDelete Route image url public async Task
  • 使用柏林噪声来创造闪电?

    实际上 我有几个与主题标题中给出的主题相关的问题 我已经在我的应用程序中使用 Perlin 函数创建闪电 但我对我的实现并不完全满意 以下问题基于初始和改进的 Perlin 噪声实现 为了简化问题 我们假设我通过使用 1D Perlin 函
  • 我可以有两个 Fancybox 2.0 实例吗?

    我在我的网站上安装了 Fancybox 2 0 稍加修改使其看起来像 Facebook 图像预览框 我想要有 Fancybox 的第二个 实例 但它的定位不同 我的图像预览 Fancybox 当前实例 应距顶部 20 像素 目前 但我的共享
  • 使用 jquery 根据 4 个输入的总和设置数字输入最大值

    我有 4 个输入字段 我需要所有字段的总数不超过 100 我想设置要更改的字段的最大值 我一直在尝试调整 keyup 上的值 然后将其他字段的总和与当前字段的总和相区别并设置最大值 似乎工作了一段时间然后就停止了 JSfiddle 示例 h
  • Docker 添加当前目录中的每个文件

    我有一个简单的 Web 应用程序 我想将其放置在 docker 容器中 角度应用程序存在于frontend 文件夹 该文件夹位于application folder 当 Dockerfile 位于application 文件夹 内容如下 F
  • 有没有一种简单的方法可以从 python 中的无空格句子生成可能的单词列表?

    我有一些文字 s Imageclassificationmethodscan beroughlydividedinto two broad families of approaches 我想将其解析为单独的单词 我很快地研究了附魔和nltk
  • Pytorch 0.4.0:可以通过三种方式在 CUDA 设备上创建张量。他们之间有什么区别吗?

    我第三条路失败了 t3仍在CPU上 不知道为什么 a np random randn 1 1 2 3 t1 torch tensor a t1 t3 to torch device cuda t2 torch tensor a t2 t2