刀具磨耗訓練與預測函示庫,提供由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