三、編輯執行配置檔案
四、編輯dsl配置檔案
五、開始訓練任務
參考資料
作業系統:macos sierra 10.12.6
docker版本:19.03.8
fate版本:單機版1.3
python版本:3.6.10
tensorflow:1.15.2
keras版本:2.2.4
awk -f'\t' -v ofs=
','' nr == 1 ' mnist_train.csv > mnist_train_with_id.csv
目的:在第一行最前面加上id,第二行開始加序號,並用逗號作為分隔符
sed -i ""
"s/label/y/g" mnist_train_with_id.csv
目的:將表頭的label替換成y,在fate裡label的名字通常為y。
split -l 30001 mnist_train_with_id.csv mnist_train_3w.csv
目的:將mnist_train_with_id.csv分割,每乙個檔案有30001行(一行標題和30000行資料)。會生成兩個檔案:mnist_train_3w.csvaa和mnist_train_3w.csvab
mv mnist_train_3w.csvaa mnist_train_3w_a.csv
mv mnist_train_3w.csvab mnist_train_3w_b.csv
sed -i ""
"`cat -n mnist_train_3w_a.csv |
head -n 1`
" mnist_train_3w_b.csv
目的:將兩個檔案重新命名,並將mnist_train_3w_a.csv檔案的第一行(csv的表頭)插入mnist_train_3w_b.csv的最前面。這樣我們就得到了兩個有表頭和id的資料集,各有30000條資料
docker cp
$ fate_python: fate/examples/data/
docker cp
$ fate_python: fate/examples/data/
$
:本地儲存mnist_train_3w_a.csv的路徑
$
:本地儲存mnist_train_3w_b.csv的路徑
目的:將本地資料拷貝至docker容器(fate_python)中的目錄(fate/examples/data/)下
(1)上傳host方資料
首先進入fate容器:
docker exec -it fate_python bash
apt-get update
apt-get
install vim
apt-get
install
sudo
新建upload_data_host.json
sudo
vi examples/federatedml-1.x-examples/homo_nn/upload_data_host.json
上傳命令:
python fate_flow/fate_flow_client.py -f upload -c examples/federatedml-1.x-examples/homo_nn/upload_data_host.json
(2)上傳guest方資料
新建upload_data_guest.json
sudo
vi examples/federatedml-1.x-examples/homo_nn/upload_data_guest.json
上傳命令:
python fate_flow/fate_flow_client.py -f upload -c examples/federatedml-1.x-examples/homo_nn/upload_data_guest.json
可登入到fateboard檢視上傳任務情況
首先進入python直譯器:
python
搭建乙個keras模型:
import keras
from keras.models import sequential
from keras.layers import dense
model = sequential(
)model.add(dense(
512,activation=
'relu'
,input_shape=
(784,)
))model.add(dense(
256,activation=
'relu'))
model.add(dense(
10,activation=
'softmax'
))
得到json格式的模型:
json = model.to_json(
)print
(json)
拷貝輸出的一長串 json,退出python直譯器:
exit(
)
進入配置檔案,將剛剛輸出的json格式的模型拷貝到algorithm_parameters:homo_nn_0:$nn_define位置:
vi examples/federatedml-1.x-examples/homo_nn/test_homo_nn_keras_temperate.json
修改guest方資料集的name
和namespace
:
"name"
:"homo_mnist_guest",
"namespace"
:"homo_mnist_guest"
修改host方資料集的name
和namespace
:
"name"
:"homo_mnist_host",
"namespace"
:"homo_mnist_host"
修改超引數(可自行調整):
"batch_size"
: 100,
"optimizer":,
"early_stop":,
"loss"
:"categorical_crossentropy",
"max_iter"
: 5
使用自帶的dsl配置檔案,路徑:
fate/examples/federatedml-1.x-examples/homo_nn/test_homo_nn_train_then_predict.json
命令:
python fate_flow/fate_flow_client.py -f submit_job -c examples/federatedml-1.x-examples/homo_nn/test_homo_nn_keras_temperate.json -d examples/federatedml-1.x-examples/homo_nn/test_homo_nn_train_then_predict.json
成功後將得到輸出:
}, "jobid"
:"202006131204487401867",
"retcode"
: 0,
"retmsg"
:"success"
}
可登入到fateboard檢視訓練任務情況
通過log可以檢視訓練過程中損失和精度的變化情況。
使用fate進行識別的深度神經網路聯邦學習
聯邦學習框架fate實踐(訓練/測試步驟及引數說明)
手寫數字識別
這幾天在想這做字元識別方面的程式,看了很多 但是發現 上的幾乎用處都不是特別的大,理論一大堆,但是用在程式裡面則很難實現,看到有些 上說用連碼法,但是連碼法對結構的變化太敏感了,但是也從一些 裡獲得了一些靈感,我採用的是網格匹配法,準備工作採集樣本,得到了樣本的網格資訊用於接下來的識別,當然也可 一...
手寫數字識別
import os os.environ tf cpp min log level 2 不想讓警告的資訊輸出可以新增 from tensorflow.examples.tutorials.mnist import input data import tensorflow as tf def mnis...
手寫數字識別 實戰 KNN演算法識別手寫數字
鄰近演算法,或者說k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。下面是我學習knn演算法的思維導圖 其中距離的定義,各個距離的公式為 歐氏距離 n維空間的距...