命名实体识别NER遗留问题----模型构建
深度學(xué)習(xí)模型預(yù)測(cè)實(shí)質(zhì):訓(xùn)練保存的模型里面參數(shù) 整個(gè)只有一套參數(shù) 不僅保存了訓(xùn)練數(shù)據(jù)全部的正確信息,而且同字多義的情況下通過(guò)其同行的詞來(lái)判斷,雖然參數(shù)都是一套但是因?yàn)檩斎氲闹挡煌瑢?dǎo)致計(jì)算的結(jié)果不同
導(dǎo)致最終結(jié)果的不同請(qǐng)類(lèi)比線(xiàn)性回歸
1.解碼過(guò)程再了解
2.A我B A有多個(gè)A,B可能多個(gè)B 這里會(huì)出現(xiàn)矩陣相乘
3.重新完全訓(xùn)練一個(gè)新模型
不能調(diào)試的文件
windows可以嘗試使用docker for windows 再使用pycharm使用docker里面的環(huán)境 看下是否能解決您這個(gè)問(wèn)題
不能整除的時(shí)候會(huì)丟棄部分?jǐn)?shù)據(jù) 不足1個(gè)batch的時(shí)候會(huì)自動(dòng)關(guān)閉數(shù)據(jù)并行
最好是 先判斷有幾個(gè)樣例 然后給它補(bǔ)一些重復(fù)的樣例 讓樣例數(shù)能整除
1.具體的詞嵌入過(guò)程問(wèn)題
2.softmax的具體過(guò)程
3.多頭合并成一個(gè)頭的過(guò)程
4.norm層的實(shí)現(xiàn)
5.升維的作用是什么
6.返回好像沒(méi)什么用
7.訓(xùn)練數(shù)據(jù)是按段劃分好,還是按固定長(zhǎng)度好,還是按行好
根據(jù)具體情況來(lái)看? 新聞這種有自己格式的直接用其現(xiàn)有格式
電子病歷這種沒(méi)有格式的 用換行符?這樣避免同一個(gè)實(shí)體被分到
不同的區(qū)域(行)里面
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]).
解決:直接新建立一個(gè)符合要求的array,替換不滿(mǎn)足的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]
索引從零開(kāi)始
all: attention和FFN層參數(shù)都共享
ffn: 只共享FFN層參數(shù)
attention: 只共享attention層參數(shù)
None: 無(wú)參數(shù)共享
https://github.com/brightmart/albert_zh
albert 樣本權(quán)重?cái)?shù)據(jù)
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時(shí)候 attention的參數(shù)缺少的問(wèn)題
Unexpected key(s) in state_dict: “word_embeddings.encoder.layer_shared.intermediate.dense.weight”,
albert 的sharetype 由 all 改成 attention時(shí)候 原來(lái)所有的attention各自不同的參數(shù)
縮減為一層的參數(shù)就需要去掉了
1.更改別人網(wǎng)絡(luò)需要注意的問(wèn)題
1.1 標(biāo)簽的更
1.2標(biāo)簽對(duì)應(yīng)輸出維度的更改
1.3最大長(zhǎng)度的更改
1.4 json文件的更改
1.5
tensorflow2 ner 問(wèn)題
1.為什么自帶的數(shù)據(jù) 沒(méi)有長(zhǎng)度的問(wèn)題,
2.自己的數(shù)據(jù)則有長(zhǎng)度問(wèn)題
3.只能在別人給的預(yù)訓(xùn)練模型上面做fine tuning 才有效果
即使你改變網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù) 然后再 fine tuning 因?yàn)?br /> 任意給值的參數(shù)已經(jīng)沒(méi)有意義了 另外 如此小的數(shù)據(jù)量 已經(jīng)無(wú)法
在飽和的訓(xùn)練的參數(shù) 所以 想自己更改網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)值來(lái)
創(chuàng)造新的效果這條路是行不通的 除非在新的結(jié)構(gòu)和參數(shù)上面
重新利用大量數(shù)據(jù)集來(lái)訓(xùn)練一個(gè)完整的模型
postln:后 layernorm?
preln:前l(fā)ayernorm?
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
為了應(yīng)用原來(lái)的網(wǎng)絡(luò)參數(shù),可以構(gòu)建的時(shí)候保留原來(lái)完整的網(wǎng)絡(luò),之后后面不調(diào)用就行了
預(yù)訓(xùn)練模型里面的字是英文,funn tunning 的是中文,loss 還能減少,把新的中文學(xué)到了,但是因?yàn)樵~匯表沒(méi)有中文的表示 所以無(wú)法預(yù)測(cè)?
沒(méi)有解決辦法,即使把中文追加到原來(lái)英文的詞匯表中 效果還是不好 所有最終的解決方案還是 通過(guò)中文來(lái)預(yù)訓(xùn)練一個(gè)模型
修改字典大小之后 因?yàn)閯h除了很多原來(lái)的英文字符 是的再fine tunning的時(shí)候,這些字符就不認(rèn)識(shí)了 其對(duì)應(yīng)的參數(shù)就不起作用
其所表示的整個(gè)句子的關(guān)系結(jié)構(gòu) 就不能傳遞到 驗(yàn)證數(shù)據(jù)了?
命名實(shí)體識(shí)別速度的提升
max len 的提升最明顯
然后優(yōu)先提升 cpu_num,再是batch size,預(yù)測(cè)階段可以設(shè)的多些
然后是
最后把 訓(xùn)練數(shù)據(jù)的每一行再提升 比如從原來(lái)的每行128 提升到256
問(wèn)題
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
你們具體的應(yīng)用場(chǎng)景是怎樣的呢?QPS要求是多少呢?如果從框架層面進(jìn)一步改進(jìn)的話(huà)需要投入的成本會(huì)比較大 這個(gè)需要評(píng)估你們的需求了
還是先看下能不能從數(shù)據(jù)預(yù)處理階段下手吧 把一些沒(méi)用的符號(hào)都去掉 還要繼續(xù)提升的話(huà)就得走C++了 成本會(huì)大很多了
就是對(duì)電子病歷的敏感信息進(jìn)行識(shí)別并替換 數(shù)據(jù)量可能會(huì)比較多 領(lǐng)導(dǎo)的要求估計(jì)要 QPS 50
hi 我把數(shù)據(jù)改成每行256個(gè)字符之后 準(zhǔn)確率一直震蕩不能收斂 您覺(jué)得是什么原因
勁風(fēng)的味道 2019/12/30 11:03:05
這里還只是在訓(xùn)練集上的表現(xiàn)
勁風(fēng)的味道 2019/12/30 11:03:25
數(shù)據(jù)都是之前一樣的數(shù)據(jù)
原因:實(shí)體截?cái)嗟奶嗔?對(duì)吧
最好的解決方案 既保證長(zhǎng)度 又保證實(shí)體的完整性
您好 能簡(jiǎn)單的解釋一下 pyreader 的作用嗎
13:58:32
PaddleHub-金宣-百度 2019/12/30 13:58:32
pyreader是一個(gè)異步文本預(yù)處理工具 數(shù)據(jù)讀取和模型訓(xùn)練過(guò)程是異步進(jìn)行的
14:00:34
勁風(fēng)的味道 2019/12/30 14:00:34
嗯嗯 厲害了 把異步加入到了里面 另外對(duì)于數(shù)據(jù)并行只能是對(duì)于多gpu而言是吧 如果我不用gpu的話(huà) 數(shù)據(jù)并行其實(shí)是沒(méi)有用的 我的理解對(duì)嗎
PaddleHub-金宣-百度 2019/12/30 14:01:08
如果是多核就有用
勁風(fēng)的味道 2019/12/30 14:01:41
在bert 的時(shí)候 我也是嘗試過(guò)把異步處理加入到里面 因?yàn)檩敵龈袷綗o(wú)法處理而放棄了 你們卻做到了 /強(qiáng)
使用pyreader的話(huà) 輸入的樣本數(shù)得是 batch_size的整數(shù)倍
小于總行數(shù)的 batch size 整數(shù)倍的最大整數(shù)
多核心數(shù)據(jù)并行
異步數(shù)據(jù)準(zhǔn)備
paddle ernie 速度提升重點(diǎn)改進(jìn)
1.模型蒸餾,相當(dāng)于過(guò)濾,把模型中有用的信息過(guò)濾出來(lái).在準(zhǔn)確率降低很小的情況下
減少了參數(shù)量,提高了速度
2.最大處理長(zhǎng)度 即使采用矩陣運(yùn)算仍是
相當(dāng)費(fèi)cpu和內(nèi)存.之前設(shè)置的512,調(diào)整為128后,速度提升明顯,
3.多核心數(shù)據(jù)并行預(yù)測(cè)的時(shí)候只對(duì)內(nèi)存讀操作 cpu并行讀數(shù)據(jù),并行讀參數(shù),并行計(jì)算矩陣乘法 模型參數(shù)是多核共享的
4.異步是數(shù)據(jù)準(zhǔn)備不用等模型預(yù)測(cè)完上一批數(shù)據(jù)就開(kāi)始準(zhǔn)備下一批數(shù)據(jù)
5.batch size(一次處理數(shù)據(jù)的多少)的調(diào)整
20200102
現(xiàn)在要求輸入的樣本數(shù)必須是 batch_size*CPU_NUM的整數(shù)倍 如果不足的話(huà)可以在數(shù)據(jù)集中補(bǔ)一些重復(fù)樣例
數(shù)據(jù)并行造成的預(yù)測(cè)輸出順序的亂序問(wèn)題 通過(guò)
根據(jù)guid進(jìn)行了重排序 得到了解決
在構(gòu)建自己的數(shù)據(jù)集的時(shí)候guid最好是連續(xù)整數(shù)
13:55:41
PaddleHub-金宣-百度 2020/1/2 13:55:41
預(yù)測(cè)時(shí)候還是老辦法 我們自動(dòng)給predict的data加了guid
總結(jié)
以上是生活随笔為你收集整理的命名实体识别NER遗留问题----模型构建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux sh 改 cmd
- 下一篇: 超详细中文预训练模型ERNIE使用指南-