我正在尝试运行以下PyTorch代码:
<?php
$number = "555-555-5555 x 230";
preg_match_all('!\d+!', $number, $matches);
for($x=0;$x<count($matches);$x++){
for($y=0;$y<count($matches[$x]);$y++){
if($y == (count($matches[$x]) - 1)){
$result[]= "#".$matches[$x][$y];
}else{
$result[] = $matches[$x][$y];
}
}
}
for($xy=0;$xy<count($result);$xy++){
if($xy == count($result) - 1 ){
$data['ext'][] = $result[$xy];
}else{
$data['number'][] = $result[$xy];
}
}
$num = implode("-", $data['number']);
$ext = implode("", str_replace("#","",$data['ext']));
$final = array("number" => $num, "ext" => $ext);
echo "<pre>";print_r($final);
?>
但是当我尝试时,我收到此错误消息:
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)
我在做什么错?我已经安装了cuda。
答案 0 :(得分:2)
您的代码不起作用,原因是:
async
是python中的保留关键字,不能以这种方式使用,这就是为什么您获得SyntaxError
cuda()
本身也没有参数async
。构造函数如下所示:
cuda ( device = None,non_blocking = False )→张量
您可以做什么:
只调用cuda()
而没有任何参数应该可以正常工作。
有两个参数(device
和non_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
答案 1 :(得分:2)
有一个async
参数,但现在不推荐使用,因为async
在Python 3.7中成为保留字。详细信息包含在本期rename .cuda(async=..) parameters中。您可以使用non_blocking
作为替代。