FATE MNIST手寫數字識別 全連線網路

2021-10-07 04:31:49 字數 4319 閱讀 7547

三、編輯執行配置檔案

四、編輯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方資料集的namenamespace

"name"

:"homo_mnist_guest",

"namespace"

:"homo_mnist_guest"

修改host方資料集的namenamespace

"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維空間的距...