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_看起来像:

在此处输入图像描述

如您所见,其中一种内部状态已被处理。我怎样才能避免这种处置和由此产生的错误?

当我尝试部署与无状态相同的模型时,它可以正常工作。

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