命名实体识别NER遗留问题----模型构建

深度学习模型预测实质:训练保存的模型里面参数 整个只有一套参数 不仅保存了训练数据全部的正确信息,而且同字多义的情况下通过其同行的词来判断,虽然参数都是一套但是因为输入的值不同导致计算的结果不同
导致最终结果的不同请类比线性回归

1.解码过程再了解
2.A我B A有多个A,B可能多个B 这里会出现矩阵相乘
3.重新完全训练一个新模型

不能调试的文件
windows可以尝试使用docker for windows 再使用pycharm使用docker里面的环境 看下是否能解决您这个问题

不能整除的时候会丢弃部分数据 不足1个batch的时候会自动关闭数据并行
最好是 先判断有几个样例 然后给它补一些重复的样例 让样例数能整除

1.具体的词嵌入过程问题
2.softmax的具体过程
3.多头合并成一个头的过程
在这里插入图片描述
4.norm层的实现
在这里插入图片描述
5.升维的作用是什么
在这里插入图片描述
6.返回好像没什么用
7.训练数据是按段划分好,还是按固定长度好,还是按行好
根据具体情况来看? 新闻这种有自己格式的直接用其现有格式
电子病历这种没有格式的 用换行符?这样避免同一个实体被分到
不同的区域(行)里面

size mismatch for hidden2tag.weight: copying a param with shape torch.Size([9, 128]) from checkpoint, the shape in current model is torch.Size([11, 128]).
size mismatch for hidden2tag.bias: copying a param with shape torch.Size([9]) from checkpoint, the shape in current model is torch.Size([11]).
size mismatch for crf.transitions: copying a param with shape torch.Size([11, 11]) from checkpoint, the shape in current model is torch.Size([13, 13]).

解决:直接新建立一个符合要求的array,替换不满足的array 就好

score = torch.sum(self.transitions[pad_start_tags, pad_stop_tags]) + torch.sum(features[r, tags])

RuntimeError: index 11 is out of bounds for dim with size 11
0%| | 0/2 [00:13<?, ?it/s]

在这里插入图片描述
索引从零开始

all: attention和FFN层参数都共享
ffn: 只共享FFN层参数
attention: 只共享attention层参数
None: 无参数共享

https://github.com/brightmart/albert_zh
albert 样本权重数据

Missing key(s) in state_dict:
“word_embeddings.encoder.layer_shared.intermediate.0.dense.weight”,
“word_embeddings.encoder.layer_shared.intermediate.0.dense.bias”,

albert 的sharetype 由 all 改成 attention时候 attention的参数缺少的问题

Unexpected key(s) in state_dict: “word_embeddings.encoder.layer_shared.intermediate.dense.weight”,

albert 的sharetype 由 all 改成 attention时候 原来所有的attention各自不同的参数
缩减为一层的参数就需要去掉了

1.更改别人网络需要注意的问题
1.1 标签的更
1.2标签对应输出维度的更改
1.3最大长度的更改
1.4 json文件的更改
1.5

tensorflow2 ner 问题
1.为什么自带的数据 没有长度的问题,
2.自己的数据则有长度问题

3.只能在别人给的预训练模型上面做fine tuning 才有效果
即使你改变网络结构和参数 然后再 fine tuning 因为
任意给值的参数已经没有意义了 另外 如此小的数据量 已经无法
在饱和的训练的参数 所以 想自己更改网络结构和参数值来
创造新的效果这条路是行不通的 除非在新的结构和参数上面
重新利用大量数据集来训练一个完整的模型

postln:后 layernorm?

preln:前layernorm?

albert lstm ner
forward
在这里插入图片描述

D:\myenv\albert_lstm_ner\Lib\site-packages\torch\nn\modules\module.py

在这里插入图片描述
D:\code12temp\pytorch\albert_lstm_crf_ner\src\lstm_crf\model.py

在这里插入图片描述
为了应用原来的网络参数,可以构建的时候保留原来完整的网络,之后后面不调用就行了

预训练模型里面的字是英文,funn tunning 的是中文,loss 还能减少,把新的中文学到了,但是因为词汇表没有中文的表示 所以无法预测?
没有解决办法,即使把中文追加到原来英文的词汇表中 效果还是不好 所有最终的解决方案还是 通过中文来预训练一个模型

修改字典大小之后 因为删除了很多原来的英文字符 是的再fine tunning的时候,这些字符就不认识了 其对应的参数就不起作用
其所表示的整个句子的关系结构 就不能传递到 验证数据了?

命名实体识别速度的提升
max len 的提升最明显
然后优先提升 cpu_num,再是batch size,预测阶段可以设的多些
然后是
在这里插入图片描述
最后把 训练数据的每一行再提升 比如从原来的每行128 提升到256

在这里插入图片描述
问题
I1227 16:11:17.490773 16284 parallel_executor.cc:421] The number of CPUPlace, which is used in ParallelExecutor, is 8. And the Program will be copied 8 copies
I1227 16:11:18.218856 16284 build_strategy.cc:363] SeqOnlyAllReduceOps:0, num_trainers:1
I1227 16:11:18.244881 16284 parallel_executor.cc:285] Inplace strategy is enabled, when build_strategy.enable_inplace = True
I1227 16:11:18.286856 16284 parallel_executor.cc:315] Cross op memory reuse strategy is enabled, when build_strategy.memory_optimize = True or garbage collection strategy is disabled, which is not recommended

在这里插入图片描述
你们具体的应用场景是怎样的呢?QPS要求是多少呢?如果从框架层面进一步改进的话需要投入的成本会比较大 这个需要评估你们的需求了

还是先看下能不能从数据预处理阶段下手吧 把一些没用的符号都去掉 还要继续提升的话就得走C++了 成本会大很多了

就是对电子病历的敏感信息进行识别并替换 数据量可能会比较多 领导的要求估计要 QPS 50

在这里插入图片描述
hi 我把数据改成每行256个字符之后 准确率一直震荡不能收敛 您觉得是什么原因
劲风的味道 2019/12/30 11:03:05
这里还只是在训练集上的表现
劲风的味道 2019/12/30 11:03:25
数据都是之前一样的数据

原因:实体截断的太多了 对吧
最好的解决方案 既保证长度 又保证实体的完整性

您好 能简单的解释一下 pyreader 的作用吗
13:58:32
PaddleHub-金宣-百度 2019/12/30 13:58:32
pyreader是一个异步文本预处理工具 数据读取和模型训练过程是异步进行的
14:00:34
劲风的味道 2019/12/30 14:00:34
嗯嗯 厉害了 把异步加入到了里面 另外对于数据并行只能是对于多gpu而言是吧 如果我不用gpu的话 数据并行其实是没有用的 我的理解对吗

PaddleHub-金宣-百度 2019/12/30 14:01:08
如果是多核就有用

劲风的味道 2019/12/30 14:01:41
在bert 的时候 我也是尝试过把异步处理加入到里面 因为输出格式无法处理而放弃了 你们却做到了 /强

使用pyreader的话 输入的样本数得是 batch_size的整数倍
小于总行数的 batch size 整数倍的最大整数

在这里插入图片描述
多核心数据并行
异步数据准备

paddle ernie 速度提升重点改进

1.模型蒸馏,相当于过滤,把模型中有用的信息过滤出来.在准确率降低很小的情况下
减少了参数量,提高了速度
2.最大处理长度 即使采用矩阵运算仍是
相当费cpu和内存.之前设置的512,调整为128后,速度提升明显,
3.多核心数据并行预测的时候只对内存读操作 cpu并行读数据,并行读参数,并行计算矩阵乘法 模型参数是多核共享的
4.异步是数据准备不用等模型预测完上一批数据就开始准备下一批数据
5.batch size(一次处理数据的多少)的调整

20200102
现在要求输入的样本数必须是 batch_size*CPU_NUM的整数倍 如果不足的话可以在数据集中补一些重复样例

数据并行造成的预测输出顺序的乱序问题 通过
根据guid进行了重排序 得到了解决

在这里插入图片描述
在构建自己的数据集的时候guid最好是连续整数
13:55:41
PaddleHub-金宣-百度 2020/1/2 13:55:41
预测时候还是老办法 我们自动给predict的data加了guid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值