【Text_classification】 PaddlePaddle框架下出错调整到运行的实验和记录
使用的是Paddle框架2.0版本
網頁: https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.1/demo/text_classification
也可以在其平臺上利用公開數據集跑一跑:
網頁:https://aistudio.baidu.com/aistudio/projectdetail/2390146?contributionType=1
使用的預訓練框架是:Ernie-tiny
下面記錄我自己的實驗數據:
1. 記錄預訓練模型下載位置
下載的模型存儲到這里了!! !
因為模型一般會定義一個位置提前加載預訓練模型,這樣就不會重復下載了! 只需要掃描并加載!
2. 語法出錯合集
問題一:header: 是不是有第一行的標簽!!!
是不是包含了頭介紹:
就是是不是有第一行的標簽!!!
問題二: KeyError
說明在讀入數據時就出現了問題
造成這個問題的原因一般是沒有該key!
仔細看下面的代碼可以看出:
record[‘label’] = slef.label_map[example.label] !
再看看你的label定義:
這是text不是label! 不出錯才怪呢!
是這個函數有問題:
在該函數中,第一個先讀的label! 第二讀的text!
而自己的數據集第一列是text! 所以導致錯誤!
我們在base_NLP_dataset中將源碼調整為label 是第一列! text文本是第二列! 但是這樣是有問題的!
原因一: 我們pycharm中改正可能在linux下沒有改正
原因二: 這樣改正還是不行的!
解決方法: 修改自己的數據集,將兩列互換!
下面是實現方法:
兩列互換 DF yyds
import pandas
import pandas as pd
實現行列互換 DF yyds
path = "/home/wxx/progressfiles/project_pc_NLP/Texts_Classification/demodataset/dev.txt" data = pandas.read_table(path)df = pd.DataFrame(data)print(df.head()) print(df["text_a"])df[['label', 'text_a']] = df[['text_a', 'label']] df.columns = ['label', 'text_a'] print(df.head()) df.to_csv("/home/wxx/progressfiles/project_pc_NLP/Texts_Classification/demodataset/dev2.txt", sep="\t", index=0)再次運行就沒有問題了!
總結
一定要自己看出錯信息!
要遵循源代碼的輸入輸出格式! 看看它怎么讀的! 明白數據的變化形式
問題三: 沒有loaded from 。。。
3. 實驗結果
第一次實驗: 完全按照教程
效果不理想
第二次實驗: 增大epoches、增大batch_size
這里是接著訓練的:
這里訓練了15次后,準確率提升了
第三次實驗:再次訓練35次!! 這次共訓練了50次
第四次訓練:直接拉滿到200 epochs
上面都是過擬合了,這里才是最正確的
這里才是最關鍵的!!上面的都沒有用到這里!
你在做的時候一定要看看是不是過擬合了!
如果損失很小,準確率極其高,那么就是過擬合了,這樣的模型是不具有泛化能力的!
你用在測試文件中,效果肯定很差!!
采用最佳的:
取5次最佳:
4. 實驗總結:
4.1 過擬合! 看看自己損失是不是太小! 準確率是不是太高了??
這樣下去是過擬合的! 趕緊停下去尋找問題!
4.2 Paddle中model.pdparams才是我們的模型!! 寫路徑時要精確到它
4.3 最佳模型就是最佳模型,而且最終準確率也不會變
5. 在這里學到的其它知識:
https://blog.csdn.net/qq_35222729/article/details/120419015
總結
以上是生活随笔為你收集整理的【Text_classification】 PaddlePaddle框架下出错调整到运行的实验和记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstrap获取弹框数据_Boot
- 下一篇: 测试服务器性能常用算法,服务器性能剖析(