mxnet:参数始终在CPU上

时间:2017-12-27 07:57:58

标签: deep-learning mxnet

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

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

results of get_params

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

1 个答案:

答案 0 :(得分:1)

调用mod.get_params同步GPU内存中的参数,并将副本放在CPU内存中。您在cpu上下文中看到了副本,因此无需担心。

如果参数“脏”,则会调用_sync_params_from_devices。 (即不同步);其中'设备'是GPU(s)。