#javascript #python #tensorflow #keras #tensorflowjs-converter
#javascript #python #тензорный поток #keras #tensorflowjs-конвертер
Вопрос:
Я пытаюсь развернуть модель, содержащую LSTM-ячейку с сохранением состояния, используя TensorflowJS. Модель была предварительно обучена в 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 и импортировал ее в javascript с 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)
}
Комментарии:
1. Не могли бы вы показать больше Js-кода?
2. Добавлен фрагмент кода JS для создания прогнозов. Я получаю ошибку на второй итерации.