0

TensorflowJS を使用してステートフル LSTM セルを含むモデルをデプロイしようとしています。モデルは keras で事前トレーニングされており、次のように構築されています。

model = Sequential()
model.add(TimeDistributed(Dense(80, activation = 'sigmoid'),input_shape=(timesteps, data_dim)))
model.add(LSTM(output_dim,activation = 'sigmoid',return_sequences=False,stateful=True))
model.add(Dense(output_dim, activation='sigmoid'))

モデルをトレーニングした後、tensorflowjs_converterで変換し、 tf.loadLayersModel("/fullmodelTF/model.json").

予測をしようとすると、 の最初の呼び出しで機能しmodel.predict()ます。もう一度予測しようとすると、次のエラーが発生します。

Error: Tensor is disposed.

開発者コンソールでモデル オブジェクトを調べたところ、ステートフル LSTM レイヤーでプロパティstates_が次のようになっていることに気付きました。

ここに画像の説明を入力

ご覧のとおり、内部状態の 1 つが破棄されました。この破棄と結果として生じるエラーを回避するにはどうすればよいですか?

同じモデルをステートレスとしてデプロイしようとすると、問題なく動作します。

JavaScript での予測のループは次のようになります。

result=[]
for(var i=0;i<inp.length;i++){
   var tensor =  tf.tensor(inp[i], [1,timesteps,no_features])
   var prediction=this.model.predict(tensor);
   var data = await prediction.data();
   result.append(data)
 }
4

0 に答える 0