5

GPU 上に構築されたディープ ラーニング モデルのピクル ファイルがいくつかあります。それらを本番環境で使用しようとしています。しかし、サーバーでそれらを unpickle しようとすると、次のエラーが発生します。

トレースバック (最新の呼び出しが最後):
ファイル "score.py"、30 行目、
モデル内 = (cPickle.load(file))
ファイル "/usr/local/python2.7/lib/python2.7/site-packages/ Theano-0.6.0-py2.7.egg/theano/sandbox/cuda/type.py", line 485, in CudaNdarray_unpickler
return cuda.CudaNdarray(npa)
AttributeError: ("'NoneType' object has no attribute 'CudaNdarray'" 、、(array([[0.011515、0.01171047、0.10408644)、...、-
0.0343636、0.04944979、-0.06583775]、 [
-0.03771918、0.080524、-0.0609912、0.051912、0.051912、0.051912、0.051912、0.051912 、 、-0.07109226、-0.00932018、...、 0.04316209、0.02817888、0.05785328]、 ...、




[ 0.0703947 , -0.00172865, -0.05942701, ..., -0.00999349,
0.01624184, 0.09832744],
[-0.09029484, -0.11509365, -0.07193922, ..., 0.10658887,
0.17730837, 0.01104965],
[ 0.06659461, -0.02492988, 0.02271739, ..., -0.0646857 ,
0.03879852, 0.08779807]], dtype=float32),))

ローカル マシンでその cudaNdarray パッケージを確認しましたが、インストールされていませんが、それらを unpickle することはできます。しかし、サーバーではできません。GPU を搭載していないサーバーで実行するにはどうすればよいですか?

4

4 に答える 4

1

これは私にとってはうまくいきます。注: 次の環境変数が設定されていない限り、これは機能しません。export THEANO_FLAGS='device=cpu'

import os
from pylearn2.utils import serial
import pylearn2.config.yaml_parse as yaml_parse

if __name__=="__main__":

_, in_path, out_path = sys.argv
os.environ['THEANO_FLAGS']="device=cpu"

model = serial.load(in_path)

model2 = yaml_parse.load(model.yaml_src)
model2.set_param_values(model.get_param_values())

serial.save(out_path, model2)
于 2015-07-29T21:39:58.067 に答える
0

モデル全体ではなく、パラメーター W と b を保存するだけでこの問題を解決しました。これを使用してパラメーターを保存できます: http://deeplearning.net/software/theano/tutorial/loading_and_saving.html?highlight= Saving%20load#robust-serialization これにより、CudaNdarray を numpy 配列に保存できます。次に、numpy.load() でパラメーターを読み取り、最後に theano.shared() を使用して numpy 配列を tensorSharedVariable に変換する必要があります。

于 2016-12-09T09:29:28.790 に答える