基于MindSpore的文本分类迁移学习

转载地址:https://bbs.huaweicloud.com/forum/thread-144358-1-1.html

作者:李响

邮箱:chaojililin@163.com

基于MindSpore1.3.0的文本分类迁移学习

本人基于MindSpore1.3.0版本开发文本分类迁移学习(下面是关键步骤的解释说明,具体代码见附件)

导入模块:

import argparse
import os
import os.path
import time
import numpy as np
import json
import tools
import preprocess
import postprocess
import datetime
import submodel
from mindspore import Tensor
from automl import EarlyStopValAcc, BestAccSaver, TrainAccUpdater, ValControl
import mindspore.dataset as ds
from mindspore.train.callback import Callback
from mindspore.train.serialization import save_checkpoint
import english_tokentool
from mindspore.train.serialization import export

数据集准备:

自建一个目录text作为根目录,再建一个若干个子目录作为一级目录(sport、education、fashion、superstar、politic、diet),具体目录结构如下,一级目录下存储是具体的txt文本信息

text----sport

      ----education

      ----fashion

      ----superstar

      ----politic

      ----diet

读取数据到内存:

preprocess.create_data_lists(FLAGS.data_dir,  # 训练数据地址
                             FLAGS.testing_percentage,  # 分割的测试数据集的比列
                             FLAGS.validation_percentage,  # 分割的验证数据集的比列
                             file_format,  # 文件格式
                             FLAGS.three_parts)  # 是否需要test数据集
preprocess.update_fix_length()
preprocess.check_input_data()  # 校验读取到的数据是否正常, 如果不正常好抛出异常
preprocess.cache_train_data()  # 缓存训练数据
submodel.add_sample_inf_to_cache_in_memory()  # 将采样信息加入到缓存中,方便后续进行采样

数据集训练:

train_samples, train_ground_truth = submodel.get_random_data_from_cache_memory(-1, 'training')
train_x, train_y = np.transpose(np.array(train_samples).astype("float32"), axes=[0, 2, 1]), np.array(
    train_ground_truth).astype("float32")
train_data_set = TTDataset(train_x, train_y)
train_data_set = ds.GeneratorDataset(train_data_set, column_names=["text", "label"], shuffle=True)
train_data_set = train_data_set.batch(FLAGS.batch_size, drop_remainder=True)
dataset_size = train_data_set.get_dataset_size()
FLAGS.dataset_size = dataset_size
print(dataset_size)

数据集验证;

validation_dataset_name = 'validation' if FLAGS.three_parts else 'testing'
validation_samples, validation_ground_truth = submodel.get_random_data_from_cache_memory(-1,
                                                                                         validation_dataset_name)
valid_x, valid_y = np.transpose(np.array(validation_samples).astype("float32"), axes=[0, 2, 1]), np.array(
    validation_ground_truth).astype("float32")

定义网络:

# model
network, model, optim = submodel.add_final_training_ops_CNN()

转为MindIR:

# 转化为mindir格式
input_np = np.random.uniform(0.0, 1.0, size=[1, 128, FLAGS.fix_length]).astype(np.float32)
export(network, Tensor(input_np), file_name="./modeloutput/text_mobilenet", file_format='MINDIR')
command = r'call modelConvertMindspore\converter_lite.exe --fmk=MINDIR --modelFile=' + './modeloutput/text_mobilenet.mindir' + ' --outputFile=' + './modeloutput/text_mobilenet'
os.system(command)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值