【发布时间】:2020-09-28 23:15:47
【问题描述】:
我尝试使用由 Tensorflow Lite Model Maker 提供的 AverageWordVecModelSpec 构建一个 android 应用程序来预测文本分类。
我正在使用图书内容来测试我的应用是否正常工作。我为这个实验提供了 3 本书。代码如下:
!pip install git+https://github.com/tensorflow/examples.git#egg=tensorflow-examples[model_maker]
import numpy as np
import os
import tensorflow as tf
assert tf.__version__.startswith('2')
from tensorflow_examples.lite.model_maker.core.data_util.text_dataloader import TextClassifierDataLoader
from tensorflow_examples.lite.model_maker.core.task.model_spec import AverageWordVecModelSpec
from tensorflow_examples.lite.model_maker.core.task import text_classifier
data_path = '/content/drive/My Drive/datasetps'
model_spec = AverageWordVecModelSpec()
train_data = TextClassifierDataLoader.from_folder(os.path.join(data_path, 'train'), model_spec=model_spec, class_labels=['categorya', 'categoryb'])
test_data = TextClassifierDataLoader.from_folder(os.path.join(data_path, 'test'), model_spec=model_spec, is_training=False, shuffle=False)
model = text_classifier.create(train_data, model_spec=model_spec)
loss, acc = model.evaluate(test_data)
model.export(export_dir='.')
当我只使用 2 门课程/书籍时它可以工作(与 tensorflow 团队提供的示例相同): it works normal even though it has small acurracy-- because i only takes 20 sample page per book as dataset actually
你可以看到我这里有合理的损失值, 但是当我尝试添加第三类时遇到问题:
train_data = TextClassifierDataLoader.from_folder(os.path.join(data_path, 'train'), model_spec=model_spec, class_labels=['categorya', 'categoryb', 'categoryc'])
test_data = TextClassifierDataLoader.from_folder(os.path.join(data_path, 'test'), model_spec=model_spec, is_training=False, shuffle=False)
这是涉及 3rd class 的训练结果: enter image description here
您可以看到损失值大于 1 是不合理的。 我试图找到我应该更改哪一行代码(来自 Tensorflow Model Maker)来解决它,并在这个论坛上结束了这个问题。
那么是否有可能为 textclassifier 使用多类模型 AverageWordVecModelSpec TFlite 模型制作者?
【问题讨论】:
-
你得到上述线程的解决方案了吗?用于多级文本分类
标签: python tensorflow word2vec text-classification tensorflow-lite