ケラスモデルを使用して予測を返すdjangoにREST APIを記述しようとしています。しかし、load_model()
関数はモデルの読み込みに時間がかかり、モデルを初期化するたびにユーザーが長時間待たされることを避けたいと考えています。モデルを初期化して、そのモデルを使用して予測が一度ロードされるように、正しい方法は何でしょうか?マルチテナントをサポートするDjangoでKerasモデルを正しく読み込む
サイドノートでは、私は可能性がコールド考えの一つの方法は、以下のようsettings.pyでモデルを初期化することでした:
私の見解でsettings.py
json_file=open("model.json","r")
loaded_json=json_file.read()
json_file.close()
model=model_from_json(loaded_json)
model.load_weights("model.h5")
MODEL=model
そして。
views.py
:PY私は、この変数モデルを使用します一度に1人のユーザーしかアクティブでない場合(モデルは一度初期化され、その後のすべての予測がそのモデルを使用して実行される)、これは効果的です。複数のユーザーが同時にアクティブにしているがあれば、それは最初に来たの呼び出しが、後者の呼び出しのために良い作品は、それが同時にアクセスできるように、どのように私は適切にモデルをロードする必要があり、エラー
'NoneType' object has no attribute 'shape'
Apply node that caused the error: ConvOp{('imshp', (31, 31, 32)),('kshp', (3, 3)),('nkern', 64),('bsize', None),('dx', 1),('dy', 1),('out_mode', 'valid'),('unroll_batch', None),('unroll_kern', None),('unroll_patch', True),('imshp_logical', (31, 31, 32)),('kshp_logical', (3, 3)),('kshp_logical_top_aligned', True)}(InplaceDimShuffle{0,2,3,1}.0, InplaceDimShuffle{3,2,0,1}.0)
Toposort index: 13
Inputs types: [TensorType(float32, 4D), TensorType(float32, 4D)]
Inputs shapes: [(1L, 31L, 31L, 32L), 'No shapes']
Inputs strides: [(123008L, 124L, 4L, 3844L), 'No strides']
Inputs values: ['not shown', None]
Outputs clients: [[Elemwise{Composite{(i0 * ((i1 + i2) + Abs((i1 + i2))))}}[(0, 1)](TensorConstant{(1L, 1L, 1..1L) of 0.5}, ConvOp{('imshp', (31, 31, 32)),('kshp', (3, 3)),('nkern', 64),('bsize', None),('dx', 1),('dy', 1),('out_mode', 'valid'),('unroll_batch', None),('unroll_kern', None),('unroll_patch', True),('imshp_logical', (31, 31, 32)),('kshp_logical', (3, 3)),('kshp_logical_top_aligned', True)}.0, InplaceDimShuffle{x,0,x,x}.0)]]
を与えますか?
ありがとうございます。ここ
修正方法を理解しましたか? – streamride
@streamrideあなたはviews.pyに必要なインスタンスごとにcopy.copy(モデル)を行い、安全に使うことができます。私はそれを使用してプロジェクトを修正しました –
https://stackoverflow.com/questions/47295025/valueerror-at-image-tensor-tensoractivation-5-softmax0-shape-4-dtyp/47300005?noredirect=1#comment81555441_47300005 –