当前位置:  开发笔记 > 编程语言 > 正文

异步调用cuda()会导致SyntaxError

如何解决《异步调用cuda()会导致SyntaxError》经验,为你挑选了1个好方法。

我正在尝试运行以下PyTorch代码:

for i, (input, target) in enumerate(train_loader):

    input = input.float().cuda(async=True)
    target = target.cuda(async=True)
    input_var = torch.autograd.Variable(input)
    target_var = torch.autograd.Variable(target)

    output = model(input_var)

但是当我尝试时,我收到此错误消息:

input = input.float().cuda(async=True)
                               ^
SyntaxError: invalid syntax
Process finished with exit code 1

我究竟做错了什么?我已经安装了cuda。



1> blue-phoenox..:

您的代码无效,因为:

async 是python中的保留关键字,不能以这种方式使用,这就是为什么您得到 SyntaxError

cuda()本身也没有争论async。构造函数如下所示:

CUDA设备=无,non_blocking =假)?张量

你可以做什么:

只需cuda()不带任何参数的调用就可以正常工作。

您可以使用两个参数(devicenon_blocking)进行调用cuda()
您没有写您想做的事情,但是non_blocking可能是您要找的东西:

non_blocking (布尔):
如果True并且源位于固定内存中,则副本将相对于主机是异步的。否则,该参数无效。默认值:False

总是很高兴查看文档:https :
//pytorch.org/docs/stable/tensors.html#torch.Tensor.cuda



作为附加组件:如果您对async实际使用的东西感兴趣,可以在这里查看:https : //www.python.org/dev/peps/pep-0492/#new-syntax

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有