如何从保存的模型中获得文本预测准确性”

时间:2019-06-01 12:05:35

标签: python tensorflow machine-learning text-classification tensorflow.js

tensorflow和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();
}

summary of model loaded, trained and saved from small portion of data

卡在重新创建的模型中(错误:未捕获的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 :(得分:0)

我相信我看到了两个问题。

首先,您使用的是loadModel,已弃用。您需要尽快切换到loadLayersModel。就像您当前正在使用的那样,它也可以接受IOHandler。

第二件事是您需要在保存之前编译模型。我看到您正在加载,然后尝试进行编译。加载后无需编译。您 CAN 但是会加载无层模型。

在保存模型之前,请确保其状态良好。这似乎是问题所在。