- 博客(36)
- 收藏
- 关注
原创 个人总结啊
问答模型由两部分组成reader模型训练使用了dureader数据集,并用flask库作为服务器进行主机间的通信KBQA中训练了三个模型并使用torchserve部署到老师提供的服务器上,提供多线程、并发访问操作启动reader运行paddle文件夹下的app.py启动KBQA在QA文件夹下运行指令或在老师服务器上运行下面四条指令...
2022-06-11 22:43:49
178
1
原创 问答模型(十一) reader部署
使用flask将最开始训练好的paddle框架的阅读理解部署到本地,向前端同学开放输入query及context后返回answer及答案置信度的apiapi测试输出如下
2022-06-06 22:49:54
213
原创 问答模型(十) torchserve部署
父类basehandler类方法功能分析def initialize:初始化类内变量def preprocess:收取由该模型接口传入的数据inference:送入模型进行预测后得到模型的输出postprocess:对输出数据后处理部署逻辑单个模型的基本逻辑向NER接口发送question可进行question的命名实体识别得到entity向W2V接口发送entity可得到entity的close entity向reader接口发送question和doc可获得answer模型
2022-06-06 19:51:38
329
原创 问答模型(九) 模糊查询改进
下载预训练的W2V词表使用gensim读取下载的预训练词向量并存为.pickle格式(因为某些暂时不清楚的原因,torchserve里没有成功使用gensim读取到词向量,因此存为.pickle格式,使用pickle.load(f)方法进行读取)引入词向量后的近似实体识别测试测试中为了简单且速度快,没有使用NER模型提取实体,而是使用jieba进行关键词提取即词性分析得到命名实体效果如下...
2022-06-05 19:51:45
186
原创 [问答模型]七 模型优化
为中文维基百科知识建立索引库,利用albert模型进行命名实体提取,提取后进行检索。通过预训练W2V中文词向量进行模糊关键词匹配,最终找到索引库中的文段,使用上述阅读理解模型进行答案获取。选择torchserve作为模型服务器部署工具,因此将模型全部替换为torch框架下的模型。将转化为json的中文wiki数据存入sqlite数据库,对大规模数据索引进行加速...
2022-06-05 19:37:39
74
原创 问答模型(六)——模型训练与预测
模型训练模型训练的过程通常有以下步骤:从dataloader中取出一个batch data将batch data喂给model,做前向计算将前向计算结果传给损失函数,计算loss。loss反向回传,更新梯度。重复以上步骤。每训练一个epoch时,程序通过evaluate()调用paddlenlp.metric.squad中的squad_evaluate(), compute_predictions()评估当前模型训练的效果,其中:compute_predictions()用于生成可提交
2022-03-16 20:17:32
700
原创 问答模型(八)——选用多种样例进行测试
以下是一些自己ctrl+c ctrl+v的、不属于测试集的问题及段落,既测试模型在不同类问题上的表现,也测试能否处理仅有一条数据的数据集。废话小编数据形式:{ "data": [ { "paragraphs": [ { "context": "王者荣耀520活动将会限时返场小乔&周瑜的情人节皮肤纯白花嫁&真爱至上。那么小乔纯白花嫁怎么获得呢?需要多少点券呢?相信不少玩家还
2022-03-16 19:50:21
248
原创 问答模型(七)——整合代码
from paddlenlp.datasets import load_datasetimport paddlenlp as ppnlpfrom utils import prepare_train_features, prepare_validation_featuresfrom functools import partialfrom paddlenlp.metrics.squad import squad_evaluate, compute_predictionimport paddlenl
2022-03-16 19:30:34
1526
3
原创 问答模型(六)——模型训练及预测
模型训练模型训练的过程通常有以下步骤:从dataloader中取出一个batch data将batch data喂给model,做前向计算将前向计算结果传给损失函数,计算loss。loss反向回传,更新梯度。重复以上步骤。每训练一个epoch时,程序通过evaluate()调用paddlenlp.metric.squad中的squad_evaluate(), compute_predictions()评估当前模型训练的效果,其中:compute_predictions()用于生成可提交
2022-03-16 17:28:50
745
原创 问答模型(五)——模型构建
阅读理解本质是一个答案抽取任务,PaddleNLP对于各种预训练模型已经内置了对于下游任务-答案抽取的Fine-tune网络。以下项目以BERT为例,介绍如何将预训练模型Fine-tune完成答案抽取任务。答案抽取任务的本质就是根据输入的问题和文章,预测答案在文章中的起始位置和结束位置。基于BERT的答案抽取原理如下图所示:# 设置想要使用模型的名称model = ppnlp.transformers.BertForQuestionAnswering.from_pretrained(MODEL_N
2022-03-16 17:25:15
2071
原创 问答模型(四)——数据处理
使用load_dataset()API默认读取到的数据集是MapDataset对象,MapDataset是paddle.io.Dataset的功能增强版本。其内置的map()方法适合用来进行批量数据集处理。map()方法传入的是一个用于数据处理的function。 以下是Dureader-Robust中数据转化的用法:max_seq_length = 512doc_stride = 128train_trans_func = partial(prepare_train_features,
2022-03-16 17:19:34
284
原创 问答模型(三)——数据预处理时的bug们
bug1自己编写的read数据方法使用loaddatasets方法后得到的单条数据类型为Tuple,而预加载的单条数据类型为Dict因此将数据集全部转为Dicttrain_ds = dict(train_ds)这样将迎来了第二个bugbug2预加载的数据集可以使用xxx[-1]访问到最后一条数据,而本地加载的数据集智能用xxx[len(xxx) - 1]访问到最后一条数据。发现本地加载的数据集是通过每条数据自带的index列对数据进行索引访问,而预加载的数据集index是不包含在数据中.
2022-03-16 17:15:47
124
原创 问答模型训练(二)——数据预处理
到目前为止,问答模型的代码已经全部写完并可以跑通啦,所以此篇以及后续的n篇里,内容会集中在复盘+细节修正上。服务器选择paddlepaddle和paddlenlp已经在自己的电脑上配置完成,但由于个人PC算力有限,在AI Studio上使用模拟我的8G CPU无GPU的环境进行模型训练时,无论如何调节batchsize,内存始终溢出。为了模型训练的效果,最终还是选择了在AI Studio上对模型进行训练。同样,后续使用模型进行预测时,在数据预处理过程以及后续预测过程都出现了内存溢出的情况,因此拟用AI
2022-03-16 17:06:25
2495
3
原创 问答模型训练(一)
参考AI Studio----基于bert的模型的机器阅读理解安装paddle2.0.2框架执行以下命令安装(推荐使用百度源):python -m pip install paddlepaddle==2.0.2 -i https://mirror.baidu.com/pypi/simple修改下载到的paddle的源码按理说下载好的库与参考链接中使用的库相同,在安装好该环境后就能直接使用。但实际情况是,pip安装的库与paddle的github仓库中的文件有所出入,因此将使用到的文件对照gi
2022-03-13 11:35:45
1441
原创 问答模型方案设计
方案设计图示query: 用户的提问passage: 文章问答模型设计的是简单问题模型,即query的答案是从passage中抽取出的。query和passage经过数据预处理,得到id形式的输入,然后把query,passage的id形式输入到BERT模型,BERT模型经过处理会输出答案的位置,输出位置以后就可以得到相应的答案了。...
2022-03-10 17:37:15
798
原创 山东大学数据仓库数据挖掘知识点整理
关联规则基于变量种类布尔型关联规则量化型关联规则基于数据的抽象层次单层的关联规则多层的关联规则基于规则中涉及到的数据的维数单维关联规则多维关联规则关联规则挖掘分类频繁项集挖掘序列模式挖掘结构模式挖掘apriori算法关联规则的挖掘过程分解为两个子问题发现频繁项集支持度由频繁项集生成关联规则置信度apriori算法思想是一种最有影响的挖掘布尔关联规则频繁项集的算法。它使用一种称作逐层搜索的迭代算法,通过k-项集用于探索(k+1)-项集。Q:apriori算法得到
2022-01-29 02:44:55
939
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSClingvo.core.ops.beam_search_step_on_kernels.cc换包啦!换到ops包,里面记录了lingvo的操作们给定“hyps”中当前批次中所有波束的部分假设和预测的下一步得分“scores”,返回得分最好的“k”假设,其中第一个“k”假设用于下一步的搜索。'eos_id’是目标语言的波束id的结束。类方法IsDuplicateHyp作用:判断超参数是否相同源码bool IsDuplicateHyp(const Hyp& cur_
2021-12-28 22:26:14
243
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSClingvo.core.learner.pylearner根据损失来优化变量的子集。它包括一个learning rate schedule,一个优化器,和gradient clipping机制。一个BaseTask可以有多个learner,每个learner优化 变量的一个子集(通常是不连接的)。关于 gradient clipping1.梯度爆炸的影响在一个只有一个隐藏节点的网络中,损失函数和权值w偏置b构成error surface,其中有一堵墙,如下所示2.解决梯
2021-12-25 10:57:30
1745
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSClingvo.core.lstm_frnn_layer.py使 LSTM RNN 层与 LSTM 神经元融合到 FRNN 的运行输入class LSTMCellExt使用额外的并行方法扩展基于lstm的单元格类类方法def FPropWithProjectedInput(self, theta, state0, inputs)方法作用:该方法是将输入投影跨时间步并行化,以加速训练。参数:theta:层权重 NestedMap。值得注意的是,出于性能原因,它被期望在
2021-12-18 21:17:30
302
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSClingvo.core.layers_with_attentionclass MoEFeedforwardLayer(base_layer.BaseLayer)MoE Mixture of Experts混合专家系统(MoE)是一种神经网络,也属于一种combine的模型。适用于数据集中的数据产生方式不同。不同于一般的神经网络的是它根据数据进行分离训练多个模型,各个模型被称为专家,而门控模块用于选择使用哪个专家,模型的实际输出为各个模型的输出与门控模型的权重组合。各个专家模型
2021-12-11 18:36:31
873
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSC类名class TransformerAttentionLayer(base_layer.BaseLayer)方法def _FinishExtendStep(self, theta, query_vec, unnormalized_query_vec, extended_packed_src, t=None)参数列表:theta: .NestedMap 对象,该对象包含此层及其子层的权重值。query_vec: [target_batch, dim]unnormal
2021-12-09 15:24:04
643
原创 [软件工程应用与实践]lingvo学习笔记
2021SC@SDUSClingvo.core.favor_attention包查看导入的compat中基于tensorflow的方法from lingvo import compat as tffrom lingvo.core import py_utilscompat: 兼容性. 用于进行tensorflow的兼容处理内置方法:数据集处理 class _CacheDataset(dataset_ops.UnaryUnchangedStructureDataset):基于无状态缓存实
2021-12-09 14:52:58
582
原创 [软件工程应用与实践]lingvo学习笔记
[软件工程应用与实践]lingvo学习笔记2021SC@SDUSC能看出来, 代码的作者不同, 代码的组织风格也不同. 负责该模块的大佬习惯在构造方法时加入默认参数, 起的名字也带有缩写. 读书是与作者交流, 读代码也相当于和那位大佬交流了一下吧! 很有趣.lingvo.core.favor_attention module模块作用 : 实现多头favore -注意层和favore -自我注意层方法next_seed(current_seed)函数作用 : 产生种子源码 :def next
2021-11-27 16:29:31
3492
原创 [软件工程应用与实践]lingvo学习笔记
[软件工程应用与实践]lingvo学习笔记2021SC@SDUSClingvo调用tf.nn.seq2seq阅读basic_rnn_seq2seq:input : embeddingoutput : embedding状态向量作为decoder的初始状态; encoder和decoder使用相同的rnn神经元, 不共享权值参数。tied_rnn_seq2seq:input : embeddingoutput : embeddingencoder和decoder共享权值参数
2021-11-21 21:40:22
633
原创 2021-10-27
[软件工程应用与实践]lingvo代码阅读2021SC@SDUSC阅读上一篇笔记时,发现代码截图略显冗余。因此这节只放部分代码截图。lingvo.core.ops包beam_search_step_op_kernels.cclingvo.core.ops.beam_search_step(scores, atten_probs, best_scores, cumulative_scores, in_scores, in_hyps, in_prev_hyps, in_done_hyps, in_at
2021-10-27 22:21:09
172
原创 2021-09-25
TensorFlow学习2021SC@SDUSCtf.keras实现线性回归pandas读取数据集数据matplotlib绘制图像keras指定输入输出数据维度, 进行模型训练pandas读取数据import pandas as pddata = pd.read_csv(‘C:/Users/NewtonLoop/Desktop/income.csv’)datamatplotlib显示数据初始图象keras建立层级次序模型model = tf.keras.Seq
2021-09-25 17:20:19
105
原创 2021-09-22
pycharm+anaconda安装tensorflow控制台输入指令pip install tensorflow检验tensorflow是否安装完成
2021-09-22 21:15:06
77
原创 2021-09-22
[软件工程应用与实践]lingvo学习笔记Lingvo是一个tensorflow框架,提供了深度学习协同研究的完整解决方案,专注于seq2seq模型。Lingvo模型有一下模块化的building block组成,非常灵活与容易扩展,中心化实验配置管理以及高度可定制的能力。框架直接支持分布式训练以及量化推理,包含了大量已有的工具、辅助函数、以及最新的研究的想法。学习TensorFlow读lingvo代码...
2021-09-22 20:34:17
276
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人