Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • PaddleHub
  • Issue
  • #904

P
PaddleHub
  • 项目概览

PaddlePaddle / PaddleHub
大约 2 年 前同步成功

通知 285
Star 12117
Fork 2091
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
PaddleHub
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 200
    • Issue 200
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 4
    • 合并请求 4
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 9月 17, 2020 by saxon_zh@saxon_zhGuest

paddlehub自定义数据训练时 报错:ZeroDivisionError: float division by zero

Created by: wcxiaowang

代码如下 import argparse import ast

import paddle.fluid as fluid import paddlehub as hub from paddlehub.dataset.base_nlp_dataset import BaseNLPDataset parser = argparse.ArgumentParser(doc) parser.add_argument("--num_epoch", type=int, default=3, help="Number of epoches for fine-tuning.") parser.add_argument("--use_gpu", type=ast.literal_eval, default=False, help="Whether use GPU for fine-tuning, input should be True or False") parser.add_argument("--checkpoint_dir", type=str, default="./aimoli", help="Directory to model checkpoint") parser.add_argument("--max_seq_len", type=int, default=96, help="Number of words of the longest seqence.") parser.add_argument("--batch_size", type=int, default=32, help="Total examples' number in batch for training.") args = parser.parse_args() #把parser中设置的所有"add_argument"给返回到args子类实例当中

jieba_paddle = hub.Module(name='jieba_paddle')

class DemoDataset(BaseNLPDataset): """DemoDataset""" def init(self): # 数据集存放位置 self.dataset_dir = r'D:\xampp\htdocs\python\log\data' #"/data/semantic/" super(DemoDataset, self).init( base_path=self.dataset_dir, train_file="train_test.tsv", dev_file="dev_test.tsv", test_file="test_test.tsv", # 如果还有预测数据(不需要文本类别label),可以放在predict.tsv predict_file="test_test.tsv", train_file_with_header=True, dev_file_with_header=True, test_file_with_header=True, # predict_file_with_header=True, # 数据集类别集合 label_list=["0", "1"])

def cut(text): res = jieba_paddle.cut(text, use_paddle=False) return res

if name == 'main': # Load Paddlehub senta pretrained model module = hub.Module(name="senta_bilstm") inputs, outputs, program = module.context( trainable=True, max_seq_len=args.max_seq_len)

# Tokenizer tokenizes the text data and encodes the data as model needed.
# If you use transformer modules (ernie, bert, roberta and so on), tokenizer should be hub.BertTokenizer.
# Otherwise, tokenizer should be hub.CustomTokenizer.
# If you choose CustomTokenizer, you can also change the chinese word segmentation tool, for example jieba.
tokenizer = hub.CustomTokenizer(
    vocab_file=module.get_vocab_path(), #会返回预训练模型对应的词表
    tokenize_chinese_chars=True,    #是否切分中文文本
    cut_function=cut,  # jieba.cut as cut function
)

#准备自定义的微调数据集
dataset = DemoDataset()
print(dataset)
reader = hub.reader.LACClassifyReader(
    dataset=dataset,
    vocab_path=module.get_vocab_path())
# Construct transfer learning network
# Use sentence-level output. 返回了senta模型对应的句子特征,可以用于句子的特征表达
sent_feature = outputs["sentence_feature"]

#选择优化策略
strategy = hub.AdamWeightDecayStrategy(
    learning_rate=1e-5,
    weight_decay=0.01,
    warmup_proportion=0.1,
    lr_scheduler="linear_decay",
)
# Setup RunConfig for PaddleHub Fine-tune API
config = hub.RunConfig(
    use_cuda=args.use_gpu,
    num_epoch=args.num_epoch,
    batch_size=args.batch_size,
    checkpoint_dir=args.checkpoint_dir,
    strategy=strategy)

# Define a classfication fine-tune task by PaddleHub's API
#构建网络并创建分类迁移任务进行Fine-tune
cls_task = hub.TextClassifierTask(#通过输入特征,label与迁移的类别数,可以生成适用于文本分类的迁移任务TextClassifierTask;
    dataset=dataset,
    feature=sent_feature,
    num_classes=dataset.num_labels,
    config=config)
print('start')
cls_task.finetune_and_eval()

Dataset有值 Dataset: DemoDataset with 17 train examples, 5 dev examples and 2 test examples 格式看起来也是正常的

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/PaddleHub#904
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7