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]
其中 params
是 shared
变量的列表。然后你可以安全地 pickle/unpickle params_numpy
.
我想保存我训练过的模型。 由于它使用共享变量(如权重、偏差等),并且它应该在没有安装 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]
其中 params
是 shared
变量的列表。然后你可以安全地 pickle/unpickle params_numpy
.