Theano 的 pkl_utils 转储功能在 Theano 0.7 中不可用?

Theano's pkl_utils Dump Function not available in Theano 0.7?

我想保存我训练过的模型。 由于它使用共享变量(如权重、偏差等),并且它应该在没有安装 Theano 的机器上可读,所以我想使用 theano.misc.pkl_utils.dump() 函数。 然而,它似乎只安装在前沿安装中(当前的 github 文件看起来与我本地的不同)。

真的是这样吗?为什么docs中的描述是?

我正在使用 theano 0.7.0,我对此感到非常困惑。 如果该功能尚不可用(我现在无法安装 bleeding edge),还有什么其他方法?我敢肯定,我不是唯一一个尝试以最简单的方式保存经过训练的模型的人 ;-)

非常感谢,

罗马

如果您使用 Theano 训练您的模型,模型的参数最终将是 shared 个变量(如果网络包含多个层,则可能是 shared 个变量的列表)。可以 pickle shared 变量列表,然后 unpickle 。但是,您可能无法在另一台机器上 unpickle 此类变量,例如没有安装 Theano,或者如果您在生成 CudaNdarrays 的支持 GPU 的机器上进行训练,然后您想在不支持 GPU 的机器上加载模型。我向您推荐的是:将参数列表的每个共享变量转换为 numpy ndarray:

params_numpy = [numpy.asarray(p.get_value()) for p in params]

其中 paramsshared 变量的列表。然后你可以安全地 pickle/unpickle params_numpy.