python - PyTorch .to('cpu') 或 .to('cuda') 的文档
问题描述
我搜索了PyTorch 文档,但找不到.to()
将张量移动到 CPU 或 CUDA 内存的任何内容。
我记得在某处看到调用to()
ann.Module
是就地操作,但在张量上却不是。
s有就地版本Tensor
吗?
我在哪里可以找到to()
两者nn.Module
和Tensor
(可能还有其他地方)的文档?
解决方案
您已经找到了文档!伟大的。
.to
不是张量的就地操作。但是,如果不需要移动,它会返回相同的张量。
In [10]: a = torch.rand(10)
In [11]: b = a.to(torch.device("cuda"))
In [12]: b is a
Out[12]: False
In [18]: c = b.to(torch.device("cuda"))
In [19]: c is b
Out[19]: True
由于b
已经在 gpu 上,因此没有进行任何更改并c is b
导致True
.
但是,对于模型,它是一个就地操作,它也返回一个模型。
In [8]: import torch
In [9]: model = torch.nn.Sequential (torch.nn.Linear(10,10))
In [10]: model_new = model.to(torch.device("cuda"))
In [11]: model_new is model
Out[11]: True
将其保留在模型中是有意义的,因为模型的参数需要移动到另一个设备而不是model
对象。对于张量,似乎创建了新对象。
推荐阅读
- php - Laravel:在负载平衡环境中获取另一个用户的会话 ID
- mongodb - 将 mongodb 嵌套数据结构结果缩减为列表
- ios - 在 nativescript-ui-sidedrawer 的抽屉下是否仍然可以有透明背景
- c# - 图片 url 正确,但通过 .net core 2.0 应用程序中的 httpClient 请求给出空响应
- c# - 从部分视图编辑器获取更新的数据并传递给控制器
- elasticsearch - ElasticSearch 搜索有时无法搜索文档
- c# - 如何在 Forge API 中向元素添加参数
- javascript - jQuery可拖动功能导致PrimeFaces JSF页面出错
- html - CSS:为什么颜色代码 #999 的颜色在 Chrome 和 Firefox 中不同?
- azure - “Add-AzureAccount”出现错误:服务返回的请求与请求中的用户“XXX”不匹配