刀具磨耗訓練與預測函示庫,提供由QAD量測資料來訓練及預測刀具磨耗之函式庫。函式庫由Python所撰寫,支援版本為3.6,Tensorflow使用版本1.11,採用GPU進行運算。並搭配Keras 2.2.4使用。刀具磨耗的訓練與預測函式庫提供包含大數據資料提取、維度轉換、模型訓練、及資料預測等解決方案,“python_api(release).zip”含有調用API之訓練程式碼(main_train.py)與預測程式碼(main_predict.py),以及包含已完成訓練可供預測的模型資料(units_12800_prediction_10.h5)。

Python:3.6.6

Tensorflow:1.11.0

Keas:2.2.4

 

附件:大數據資料深度學習函式庫(api_release).zip

bigdb.py

提供存取MongoDB伺服器中的資料表,可指定導出一份DAQ量測資料,或是一批DAQ量測資料;在存取刀具磨耗資料時,也是使用同樣的API函式庫,由bigdb.py所涵蓋的列舉如下。

new mongodb(dbname, servemame, port)

連接至資料庫,並開啟指名的資料庫名稱,預設伺服器位置為localhos。

參數 類型及說明
dbname 資料庫名稱
servername 伺服器位置
Port 伺服器連接埠

getTable(collectionname, maxCount)

指名要存取資料庫中的資料表(collection),可指定要回傳的最大資料總數,預設值為0,表示回傳所有資料表中的資料。

參數 類型及說明
collectionname 資料表名稱
maxCount 回傳最大資料長度

getTables(collectionname, start, end, length=0)

指名要存取資料庫中的資料表(collection)的文件起點與終點,可指定要回傳的最大資料總數,預設值為0,表示回傳所有資料表中的資料。

參數 類型及說明
collectionname 資料表名稱
start 文件起點
end 文件中點
length 回傳的資料筆數

csv2Table(filename, collectionname, headerarray, skipheader =0, skipfooter=0)

將CSV文件匯入MongoDB中,需指定要寫入的資料表名稱(collection name),並可指定表頭名稱陣列內的文字,作為每個資料維度的Key值。

參數 類型及說明
collectionname 資料表名稱
headerarray 設定表頭的名稱陣列
skipheader 設定要忽略的文件起頭行數
skipfooter 設定要忽略的文件結尾行數

bigtable.py

提供從MongoDB伺服器存取的資料表後,進行維度的轉換。

setTableElemet(table, headerarray)

設定資料表中的元素,並依指定的元素名稱排列。

參數 類型及說明
table 傳入資料表
namesarray 元素名稱陣列

setTablesElemet(tables, headerarray)

設定多個資料表中的元素,並依指定的元素名稱排列。

參數 類型及說明
tables 傳入多個資料表
namesarray 元素名稱陣列

getWearData(table, start, end, total)

取得指定索引範圍的連續磨耗量資料。

參數 類型及說明
table 傳入指定資料表
start 索引起點
end 索引終點
total 磨耗量的連續資料

getTabletoArray(table)

將傳入的資料表,轉換為array資料格式。

參數 類型及說明
table 傳入指定資料表

getTablestoArray(talbes)

將多個資料表,轉換為array資料格式。

參數 類型及說明
tables 傳入多個資料表

table2CSV(talbe, filename)

將資料表,轉換為CSV資料格式。

參數 類型及說明
table 傳入資料表

table2JSON(talbe, filename)

將資料表,轉換為JSON資料格式。

參數 類型及說明
table 傳入資料表

bigtrain.py

提供完整的模型訓練過程,所必要的相關函式庫。

shuffle(X_Data, Y_Data, seed=10)

參數 類型及說明
X_Data 訓練所使用的資料
Y_Data 訓練所使用的答案
seed 隨機種子

createTrainData(X_Data, Y_Data, units=12800, repeat=10, seed=10)

藉由訓練集(包含訓練資料與訓練答案),切片分割為小筆數但量大的資料集,可反覆建立出可供訓練的樣本資料。

參數 類型及說明
X_Data 訓練所使用的資料
Y_Data 訓練所使用的答案
units 每份樣本內的資料筆數
repeat 反覆次數
seed 隨機種子

splitTrainData(X_Data, Y_Data, rate=0.2)

由訓練集依指定比例產生驗證集,驗證集的資料不會被納入訓練的過程中。

參數 類型及說明
X_Data 訓練所使用的資料
Y_Data 訓練所使用的答案
rate 訓練集與驗證集的比率

normalizeData(tables)

將傳入的多個資料表之所有數值,正規化至0~1之間的數值。

參數 類型及說明
tables 需要被正規化的多個資料表

unnormalizeData(tables)

將傳入的多個資料表之所有數值(0~1區間),復原至原本應有的數值。

參數 類型及說明
tables 需要被還原的多個資料表

new trainfactory(hidden_neurons=32)

提供訓練與預測資料處理功能。

參數 類型及說明
hidden_neurons 隱藏的神經元數量

load(filename=”mymodel.h5″)

依指定的檔案名稱,嘗試載入已完成訓練的模型。

參數 類型及說明
filename 指定使用的檔案名稱

save(filename=”mymodel.h5″, autobackup=True)

依指定的檔案名稱進行儲存,提供自動備份上一個完成訓練的模型。

參數 類型及說明
filename 指定使用的檔案名稱
autobackup 覆寫前自動備份模型

createDefalutModel(input_shape, predictionCount, loss=”mse”, optimizer=”rmsprop”)

建立預設的訓練模型,包含輸入的維度、預設目標總數、可指定loss方法與最佳化方法。

參數 類型及說明
input_shape 輸入的資料維度
predictionCount 預設目標資料數量
loss loss的方法名稱
optimizer 最佳化的方法名稱

train(X_train, X_val, Y_train, Y_val, epochs=100, batch_size=64, monitor=”loss”, patience=10, verbose=1, mode=”auto”)

由訓練資料集與驗證資料集,可指定參數細節進行模型訓練。

參數 類型及說明
X_train 訓練所使用的資料
X_val 訓練所使用的答案
Y_train 驗證所使用的資料
Y_val 驗證所使用的答案
epochs 訓練次數(期數/世代)
batch_size 分割與分配大小
monitor 監看資料
patience 無法進行訓練之容忍度
verbose 訓練狀況輸出(0, 1, 2)
mode 無法進行訓練之模式

predict(predictdata)

給予輸入資料,即可提供預測結果;預測準確度相依於模型訓練結果。

參數 類型及說明
predictdata 要被使用的預測資料

getTrainGraphs(train, val, trainPredict, valPredict, notes=”, isShow=True)

繪製模型訓練的成效,須提供訓練資料、驗證資料、預測資料等資料集合,繪製後將儲存於磁碟中,可設定是否顯示圖像。

參數 類型及說明
train 訓練所使用的資料
val 訓練所使用的答案
trainPredict 訓練用的預測結果
valPredict 驗證用的預測結果
notes 儲存檔名加註內容
isShow 是否顯示繪製完成的圖像

getPredictGraphs(data, predict)

繪製預測的成果圖,須提供原始資料與預測結果資料。

參數 類型及說明
predictdata 已知的資料
predict 預測的資料

附件:大數據資料深度學習函式庫(api_release).zip