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)
}