Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 如何使用地图位置=';中央处理器';由于;RuntimeError:试图反序列化CUDA设备上的对象,但torch.CUDA.is_available()is False;_Neural Network_Pytorch_Conda - Fatal编程技术网

Neural network 如何使用地图位置=';中央处理器';由于;RuntimeError:试图反序列化CUDA设备上的对象,但torch.CUDA.is_available()is False;

Neural network 如何使用地图位置=';中央处理器';由于;RuntimeError:试图反序列化CUDA设备上的对象,但torch.CUDA.is_available()is False;,neural-network,pytorch,conda,Neural Network,Pytorch,Conda,我试图在下载以下模型 我收到: >>> import torch >>> tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2') Using cache found in .cache\torch\hub\nvidia_DeepLearningExamples_torchhub ... File "Anaconda3\envs\env3_p

我试图在下载以下模型

我收到:

>>> import torch
>>> tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2')
Using cache found in .cache\torch\hub\nvidia_DeepLearningExamples_torchhub
...
  File "Anaconda3\envs\env3_pytorch\lib\site-packages\torch\serialization.py", line 79, in validate_cuda_device
    raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
因此,我在
map\u location='cpu'
中使用了以下内容,但仍然得到了相同的错误

>>> tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2', map_location='cpu')
torch.version.cuda显示一个版本,但torch.cuda.is_available()为false

>>> import torch
>>> torch.version.cuda
'9.0'
>>> torch.cuda.is_available()
False
  • 如何避免与
    map\u location
    相关的错误,因为我使用的正是要求使用的命令错误消息

  • 如何使用cuda加载模型

不专门支持
映射位置
,它只将额外的参数转发给模型的加载,因此它取决于是否支持

在这种情况下,它不受支持,加载是在中实现的,它不会将任何
map\u位置
传递给

这意味着您需要手动加载检查点并将其应用于模型。谢天谢地,通过设置
pretrained=False
,可以使用相同的配置加载模型,而无需加载检查点,并且可以单独加载检查点,这支持
map\u location
。状态dict只需要一个小的更改,因为它是用
DistributedDataParallel
训练的,它包装了模块,这样模型中的每个
层都变成了
module.layer
。在状态dict中,
模块。
前缀需要去除

tacotron2=torch.hub.load('nvidia/DeepLearningExamples:torchhub','nvidia\u tacotron2',pretrained=False)
checkpoint=torch.hub.load\u state\u dict\u from\u url('https://api.ngc.nvidia.com/v2/models/nvidia/tacotron2pyt_fp32/versions/1/files/nvidia_tacotron2pyt_fp32_20190306.pth,map_location=“cpu”)
#展开分布式数据并行模块
#module.layer->layer
state_dict={key.replace(“module.”,“”):键的值,检查点[“state_dict”].items()中的值
#将状态dict应用于模型
tacotron2.加载状态指令(状态指令)
不专门支持
映射位置
,它只将额外的参数转发给模型的加载,因此是否支持取决于实现

在这种情况下,它不受支持,加载是在中实现的,它不会将任何
map\u位置
传递给

这意味着您需要手动加载检查点并将其应用于模型。谢天谢地,通过设置
pretrained=False
,可以使用相同的配置加载模型,而无需加载检查点,并且可以单独加载检查点,这支持
map\u location
。状态dict只需要一个小的更改,因为它是用
DistributedDataParallel
训练的,它包装了模块,这样模型中的每个
层都变成了
module.layer
。在状态dict中,
模块。
前缀需要去除

tacotron2=torch.hub.load('nvidia/DeepLearningExamples:torchhub','nvidia\u tacotron2',pretrained=False)
checkpoint=torch.hub.load\u state\u dict\u from\u url('https://api.ngc.nvidia.com/v2/models/nvidia/tacotron2pyt_fp32/versions/1/files/nvidia_tacotron2pyt_fp32_20190306.pth,map_location=“cpu”)
#展开分布式数据并行模块
#module.layer->layer
state_dict={key.replace(“module.”,“”):键的值,检查点[“state_dict”].items()中的值
#将状态dict应用于模型
tacotron2.加载状态指令(状态指令)

@michale Jungo所以我理解hub.load的问题是nvidia github链接中的hubconf.py没有像通常预期的那样实现,对吗?我尝试了
>>tacotron2=torch.hub.load('nvidia/DeepLearningExamples:torchhub','nvidia\u tacotron2',pretrained=False)
。但是我一直得到
PermissionError:[WinError 32]进程无法访问该文件,因为它正被另一个进程使用:'.cache\\torch\\hub\\torchhub.zip
,即使没有其他进程。这是为什么?我可以在这个链接上使用指令通过上面的WinError,但是现在我看到了加载检查点时的另一个问题:
不兼容密钥(缺少密钥=[],意外的密钥=[])
。执行
加载状态命令时
。有什么解决方案吗?``>>tacotron2.load_state_dict(state_dict)不兼容键(缺少键=[],意外键=[])>>>``有办法逐层查看模型摘要并以图形形式查看吗?当我尝试
>>摘要(tacotron2)
时,我得到
TypeError:summary()缺少一个必需的位置参数:“input\u size”
我猜
summary()
引用了。如果是这样的话,您需要给出您将提供给模型的输入大小,因为它需要使用一些虚拟数据运行前向传递,以确定实际使用了哪些层。除此之外,如果直接打印模型,则可以获得模块的概述。大多数情况下,这些都是有序的,但任何不按顺序进行的操作(例如,多个分支)都不会反映出来。我指的是pytorch摘要,但无法确定tacotron-2的输入大小,或者如何指定模型的输入。@michale Jungo,所以我理解hub.load的问题是nvidia github链接中的hubconf.py没有按照通常的预期实现,对吗?我尝试了
>>tacotron2=torch.hub.load('nvidia/DeepLearningExamples:torchhub','nvidia\u tacotron2',pretrained=False)
。但是我一直得到
PermissionError:[WinError 32]进程无法访问该文件,因为它正被另一个进程使用:'.cache\\torch\\hub\\torchhub.zip
,即使没有其他进程。这是为什么呢?我在这个链接上使用指令通过了上面的WinError,但是现在我看到了加载检查点时的另一个问题
>>> import torch
>>> torch.version.cuda
'9.0'
>>> torch.cuda.is_available()
False