Deep learning mxnet:参数始终在CPU上

Deep learning mxnet:参数始终在CPU上,deep-learning,mxnet,Deep Learning,Mxnet,使用mxnet时,在构建和训练模块mod后,我调用了方法mod.get_params(),以检查模型的权重和偏差 但是,我发现,即使在创建模块时将上下文设置为mx.gpu(0),get_params方法的输出总是显示参数(权重和偏差)在cpu(0)上。见下文: 我想知道权重是否真的在cpu上,所以我对程序进行了计时,发现如果我将上下文设置为gpu(0),实际上比设置为cpu(0)要快得多。因此,我认为重量实际上是在gpu上,否则训练就不会这么快了。但是,为什么get_-params方法显示我的

使用mxnet时,在构建和训练模块
mod
后,我调用了方法
mod.get_params()
,以检查模型的权重和偏差

但是,我发现,即使在创建模块时将上下文设置为
mx.gpu(0)
get_params
方法的输出总是显示参数(权重和偏差)在
cpu(0)
上。见下文:


我想知道权重是否真的在cpu上,所以我对程序进行了计时,发现如果我将上下文设置为
gpu(0)
,实际上比设置为
cpu(0)
要快得多。因此,我认为重量实际上是在gpu上,否则训练就不会这么快了。但是,为什么
get_-params
方法显示我的权重在cpu上?

调用
mod.get_-params
会将GPU内存中的参数与cpu内存中的副本同步。您看到的是cpu上下文中的副本,因此无需担心

在引擎盖下,如果参数“脏”(即不同步),则调用来自设备的
\u sync\u params\u
;其中“设备”是GPU