Как получить точность прогноза текста из сохраненной модели » - PullRequest
0 голосов
/ 01 июня 2019

плохо знаком с tenorflow, html и плохо застрял в текстовой классификации.

Я пытаюсь обнаружить положительную и отрицательную полярность текста.натренировал модель в браузере на отфильтрованном вручную тексте (предложениях) как для отрицательных, так и для положительных классов и сохранил его в файле .JSON и .BIN.

async function saveFile(){ const saveResults = await model.save('downloads://my-model-1');}

Загрузил обратно файлы с помощью пользовательского ввода

async function loadFile(){ const jsonUpload = document.getElementById('json-upload'); const weightsUpload = document.getElementById('weights-upload'); 
const model = await tf.loadModel(tf.io.browserFiles([jsonUpload.files[0], weightsUpload.files[0]]));
model.compile({loss: "categoricalCrossentropy", optimizer: "adam", metrics:'accuracy'});
model.summary();
}

сводка загруженной, обученной и сохраненной модели из небольшой части данных

, застрявшая в модели повторного создания (ОШИБКА: Uncaught TypeError: Невозможно построить последовательную модель: модель пуста. Добавитьсначала несколько слоев.)

Что мне нужно сделать, так это LOAD MODEL, эта модель должна прогнозировать полярность пользовательского ввода текста как отрицательную / положительную, точность обнаружения.

Любой может помочь, пожалуйста, в деталях, Как учиться, но не может получить его с помощью учебных пособий от https://www.tensorflow.org/js

Модель

// Define a model
        model = tf.sequential();
        console.log(sequence_length);
        //Add layers to model
        model.add(tf.layers.embedding({
        inputDim: vocabulary_size,
        outputDim: embedding_dim,
        inputLength: sequence_length,
        trainable: true
        }));
        addCLayers();
        model.add(tf.layers.dropout ({rate:0.2}));
        model.add(tf.layers.flatten());
        model.add(tf.layers.dense({units: 100, activation: 'sigmoid'}));
        model.add(tf.layers.dense({units: 1000, activation: 'sigmoid'}));
        model.add(tf.layers.dense({units: 100, activation: 'sigmoid'}));
        model.add(tf.layers.dense({units: 2, activation: 'softmax'}));

1 Ответ

0 голосов
/ 03 июня 2019

Мне кажется, я вижу две проблемы.

Во-первых, , вы используете loadModel, который устарел. Вы хотите переключиться на loadLayersModel в ближайшее время. Это также может принять IOHandler, так же, как вы используете в настоящее время.

Второе - вам нужно скомпилировать модель перед сохранением. Я вижу, что вы загружаете, а затем пытаетесь скомпилировать. Там не должно быть необходимости компилировать после загрузки. Вы CAN , однако загружаете бесслойную модель

Перед сохранением убедитесь, что ваша модель находится в хорошем состоянии. Кажется, именно в этом проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...