paddle 问题
20210324
https://www.51cto.com/art/202006/618378.htm?pc
百度OCR
import paddlehub as hub
#要用這個 chinese_ocr_db_crnn_server 模型 ,mobile模型沒有用
ocr = hub.Module(name="chinese_ocr_db_crnn_server") #加載預訓練模型
path=r'D:\code12temp\rongxiang\crawler_decode\hanzi\test\uni3a0a.png'
results = ocr.recognize_text(paths=[path], visualization=True) #輸入自定義待識別圖片路徑、并保存可視化圖片結果
results
https://www.paddlepaddle.org.cn/hubdetail?name=chinese_ocr_db_crnn_server&en_category=TextRecognition
百度產品
成功解決問題:ModuleNotFoundError: No module named 'paddle'或者 No module named 'paddle.fluid'
https://my.oschina.net/fightingwyj/blog/4667981
20200601
https://github.com/PaddlePaddle/Paddle/issues/24581
AssertionError: Not compiled with CUDA
出現這個錯誤是因為所安裝的 paddle 不支持 cuda.
可以參考
https://www.paddlepaddle.org.cn/install/quick
選擇安裝支持 gpu 的版本。
20200119 什么問題
換成1.5版本
-1 表示大小不固定?
序列標注任務 tiny快4倍 ernie
這個跟框架沒關系 paddle也有很多支持重訓的:https://github.com/PaddlePaddle/models
PaddleHub-金宣-百度 2020/1/15 15:37:02
tiny的開源計劃還需在群里問下ernie運營 我不是太清楚
15:37:56
勁風的味道 2020/1/15 15:37:56
pytorch 我試過是可以的 修改的
15:42:00
PaddleHub-金宣-百度 2020/1/15 15:42:00
可以試下https://github.com/PaddlePaddle/ERNIE ,也是可以修改的
勁風的味道 2020/1/15 15:42:47
好的 謝謝
PaddleHub-金宣-百度 2020/1/15 15:43:28
客氣~
paddle 的安裝是 paddlepaddle
docstrings:文檔注釋
gen:生成器
Profling 指發現性能瓶頸。系統中的瓶頸可能和程序員開發過程中想象的瓶頸相去甚遠。Tuning 指消除瓶頸。性能優化的過程通常是不斷重復地 profiling 和 tuning。
模型存儲和預測
當特征數量達到千億的時候,參數量很大,單機已經無法存下,所以模型的存儲和加載都和普通模式不同:
普通模式下,參數是在trainer端保存和加載的;
分布式模式下,參數的保存和加載,都是在pserver端進行,每個pserver只保存和加載該pserver自身對應部分的參數
prefetch:預先載入
異步訓練和 同步訓練 的主要差異在于:異步訓練每個trainer的梯度是單獨更新到參數上的, 而同步訓練是所有trainer的梯度合并之后統一更新到參數上,因此,同步訓練和異步訓練的超參數需要分別調節。
enable_dc_asgd : 是否開啟 DC-ASGD 此選項在異步訓練中生效,啟用異步訓練補償算法
slice_var_up : 配置是否切分一個參數到多個pserver上進行優化,默認開啟。此選項適用于模型參數個數少,但需要使用大量節點的場景,有利于提升pserver端計算并行度
learning_rate (float) - 參數的學習率。實際參數的學習率等于全局學習率乘以參數的學習率,再乘以learning rate schedule的系數。
share_vars_from (CompiledProgram) - 如果設置了share_vars_from,當前的CompiledProgram將與share_vars_from指定的CompiledProgram共享參數值 從某個位置共享參數 比如測試階段從訓練模型里面獲取共享參數
num_iteration_per_drop_scope:該選項表示間隔多少次迭代之后清理一次臨時變量
fuse:融合 a 和 b
ParallelExecutor 允許你修改執行器的相關參數,例如線程池的規模( num_threads ) 一個cpu核心一個線程
AllReduce 模式下, ParallelExecutor 調用AllReduce操作使多個節點上參數梯度完全相等,然后各個節點獨立進行參數的更新;
allreduce:所有節點
Reduce 模式下, ParallelExecutor 會預先將所有參數的更新分派到不同的節點上,在執行過程中 ParallelExecutor 調用Reduce操作將參數梯度在預先指定的節點上進行聚合,并進行參數更新,最后調用Broadcast操作將更新后的參數發送到其他節點。
reduce 專有節點
通過設置 CUDA_VISIBLE_DEVICES 環境變量來指定執行器可使用的 GPU
序列標注任務中,token的分組稱為語塊(chunk)
AUC: Area Under Curve 曲線下面積
正確率:分母為實際的值
召回率:分母為預測為真的值
召回真值:預測真值 預測為正確的值?
Fluid 使用 fill_constant 創建一個具有特定形狀和類型的 Tensor。可以通過 value 設置該變量的初始值
Fluid 使用 fill_constant_batch_size_like 創建一個具有特定形狀、類型和 batch_size 的 Tensor
cast:轉換數據類型
Tensor ,ndarray 就是多維數組
decorate:布置,放置
https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/fluid_cn/DataFeeder_cn.html#cn-api-fluid-datafeeder
數據并行處理重點
線性學習率熱身(warm up)對學習率進行初步調整。在正常調整學習率之前,先逐步增大學習率 熱身的意思
Layer-wise :按層,分層
Scaling:縮放
piecewise_decay:分段衰減
稀疏更新:即梯度以sparse tensor 結構存儲,只保存梯度不為0的行。
reduce 按維度進行處理
# 在Paddle Fluid中我們會通過同樣的變量名來共享權重.
# 訓練和測試程序的所有參數將會擁有同樣的名字,這將會使訓練和測試程序實現參數的共享,
# 所以我們使用訓練程序的 startup_program .并且由于測試的 startup_program 什么也沒有,
# 因此它是一個新的程序.
https://www.paddlepaddle.org.cn/documentation/docs/zh/api_guides/low_level/parallel_executor.html#api-guide-parallel-executor
數據并行API
PaddlePaddle 中使用的 Tensor 為 LoD-Tensor(Level-of-Detail Tensor)。它是 Fluid 中特有的概念,在普通 Tensor 的基礎上附加了序列信息。Fluid中可傳輸的數據包括:輸入、輸出、網絡中的可學習參數,全部統一使用 LoD-Tensor 表示。
從上復制到下面就可以了
https://aistudio.baidu.com/aistudio/index
百度開源項目地址
我們測試過 tiny是會快很多的
建議use_pyreader、use_data_parallel、use_gpu都設置為True
速度
設置指定gpu
aistudio 里面數據 在啟動在線環境后可以看到
模型進階:如何序列標注任務中加入CRF層?
目前序列標注任務的finetune代碼中,以softmax ce作為損失函數,該損失函數較為簡單,沒有考慮到序列中詞與詞之間的聯系,如何加入 CRF 層讓模型變得更強大呢?
總結
- 上一篇: 房价预测-paddle 实现
- 下一篇: 反向传播