企业资讯,产品资讯_博拉资讯 技术资讯 隐私计算FATE-多分类神经网络算法测试

隐私计算FATE-多分类神经网络算法测试

广告位

隐私计算FATE-多分类神经网络算法测试

一、说明

本文分享基于 Fate 使用 横向联邦 神经网络算法多分类 的数据进行 模型训练,并使用该模型对数据进行 多分类预测

  • 二分类算法:是指待预测的 label 标签的取值只有两种;直白来讲就是每个实例的可能类别只有两种(0 或者 1),例如性别只有 或者 ;此时的分类算法其实是在构建一个分类线将数据划分为两个类别。
  • 多分类算法:是指待预测的 label 标签的取值可能有多种情况,例如个人爱好可能有 篮球足球电影 等等多种类型。常见算法:Softmax、SVM、KNN、决策树。

关于 Fate 的核心概念、单机部署、训练以及预测请参考以下相关文章:

 

二、准备训练数据

上传到 Fate 里的数据有两个字段名必需是规定的,分别是主键为 id 字段和分类字段为 y 字段,y 字段就是所谓的待预测的 label 标签;其他的特征字段(属性)可任意填写,例如下面例子中的 x0x9

例如有一条用户数据为: 收入 : 10000,负债 : 5000,是否有还款能力 : 1 ;数据中的 收入负债 就是特征字段,而 是否有还款能力 就是分类字段。

本文只描述关键部分,关于详细的模型训练步骤,请查看文章《隐私计算FATE-模型训练

2.1. guest端

10条数据,包含1个分类字段 y 和 10 个标签字段 x0x9

隐私计算FATE-多分类神经网络算法测试

y 值有 0、1、2、3 四个分类

上传到 Fate 中,表名为 muti_breast_homo_guest 命名空间为 experiment

 

2.2. host端

10条数据,字段与 guest 端一样,但是内容不一样

隐私计算FATE-多分类神经网络算法测试

上传到 Fate 中,表名为 muti_breast_homo_host 命名空间为 experiment

 

三、执行训练任务

3.1. 准备dsl文件

创建文件 homo_nn_dsl.json 内容如下 :

{     "components": {         "reader_0": {             "module": "Reader",             "output": {                 "data": [                     "data"                 ]             }         },         "data_transform_0": {             "module": "DataTransform",             "input": {                 "data": {                     "data": [                         "reader_0.data"                     ]                 }             },             "output": {                 "data": [                     "data"                 ],                 "model": [                     "model"                 ]             }         },         "homo_nn_0": {             "module": "HomoNN",             "input": {                 "data": {                     "train_data": [                         "data_transform_0.data"                     ]                 }             },             "output": {                 "data": [                     "data"                 ],                 "model": [                     "model"                 ]             }         }     } } 

 

3.2. 准备conf文件

创建文件 homo_nn_multi_label_conf.json 内容如下 :

{     "dsl_version": 2,     "initiator": {         "role": "guest",         "party_id": 9999     },     "role": {         "arbiter": [             10000         ],         "host": [             10000         ],         "guest": [             9999         ]     },     "component_parameters": {         "common": {             "data_transform_0": {                 "with_label": true             },             "homo_nn_0": {                 "encode_label": true,                 "max_iter": 15,                 "batch_size": -1,                 "early_stop": {                     "early_stop": "diff",                     "eps": 0.0001                 },                 "optimizer": {                     "learning_rate": 0.05,                     "decay": 0.0,                     "beta_1": 0.9,                     "beta_2": 0.999,                     "epsilon": 1e-07,                     "amsgrad": false,                     "optimizer": "Adam"                 },                 "loss": "categorical_crossentropy",                 "metrics": [                     "accuracy"                 ],                 "nn_define": {                     "class_name": "Sequential",                     "config": {                         "name": "sequential",                         "layers": [                             {                                 "class_name": "Dense",                                 "config": {                                     "name": "dense",                                     "trainable": true,                                     "batch_input_shape": [                                         null,                                         18                                     ],                                     "dtype": "float32",                                     "units": 5,                                     "activation": "relu",                                     "use_bias": true,                                     "kernel_initializer": {                                         "class_name": "GlorotUniform",                                         "config": {                                             "seed": null,                                             "dtype": "float32"                                         }                                     },                                     "bias_initializer": {                                         "class_name": "Zeros",                                         "config": {                                             "dtype": "float32"                                         }                                     },                                     "kernel_regularizer": null,                                     "bias_regularizer": null,                                     "activity_regularizer": null,                                     "kernel_constraint": null,                                     "bias_constraint": null                                 }                             },                             {                                 "class_name": "Dense",                                 "config": {                                     "name": "dense_1",                                     "trainable": true,                                     "dtype": "float32",                                     "units": 4,                                     "activation": "sigmoid",                                     "use_bias": true,                                     "kernel_initializer": {                                         "class_name": "GlorotUniform",                                         "config": {                                             "seed": null,                                             "dtype": "float32"                                         }                                     },                                     "bias_initializer": {                                         "class_name": "Zeros",                                         "config": {                                             "dtype": "float32"                                         }                                     },                                     "kernel_regularizer": null,                                     "bias_regularizer": null,                                     "activity_regularizer": null,                                     "kernel_constraint": null,                                     "bias_constraint": null                                 }                             }                         ]                     },                     "keras_version": "2.2.4-tf",                     "backend": "tensorflow"                 },                 "config_type": "keras"             }         },         "role": {             "host": {                 "0": {                     "reader_0": {                         "table": {                             "name": "muti_breast_homo_host",                             "namespace": "experiment"                         }                     }                 }             },             "guest": {                 "0": {                     "reader_0": {                         "table": {                             "name": "muti_breast_homo_guest",                             "namespace": "experiment"                         }                     }                 }             }         }     } } 

注意 reader_0 组件的表名和命名空间需与上传数据时配置的一致。

 

3.3. 提交任务

执行以下命令:

flow job submit -d homo_nn_dsl.json -c homo_nn_multi_label_conf.json 

执行成功后,查看 dashboard 显示:

隐私计算FATE-多分类神经网络算法测试

 

四、准备预测数据

与前面训练的数据字段一样,但是内容不一样,y 值全为 0

4.1. guest端

隐私计算FATE-多分类神经网络算法测试

上传到 Fate 中,表名为 predict_muti_breast_homo_guest 命名空间为 experiment

 

4.2. host端

隐私计算FATE-多分类神经网络算法测试

上传到 Fate 中,表名为 predict_muti_breast_homo_host 命名空间为 experiment

 

五、准备预测配置

本文只描述关键部分,关于详细的预测步骤,请查看文章《隐私计算FATE-离线预测

创建文件 homo_nn_multi_label_predict.json 内容如下 :

{     "dsl_version": 2,     "initiator": {         "role": "guest",         "party_id": 9999     },     "role": {         "arbiter": [             10000         ],         "host": [             10000         ],         "guest": [             9999         ]     },     "job_parameters": {         "common": {             "model_id": "arbiter-10000#guest-9999#host-10000#model",             "model_version": "202207061504081543620",             "job_type": "predict"         }     },     "component_parameters": {         "role": {             "guest": {                 "0": {                     "reader_0": {                         "table": {                             "name": "predict_muti_breast_homo_guest",                             "namespace": "experiment"                         }                     }                 }             },             "host": {                 "0": {                     "reader_0": {                         "table": {                             "name": "predict_muti_breast_homo_host",                             "namespace": "experiment"                         }                     }                 }             }         }     } } 

注意以下两点:

  1. model_idmodel_version 需修改为模型部署后的版本号。

  2. reader_0 组件的表名和命名空间需与上传数据时配置的一致。

 

六、执行预测任务

执行以下命令:

flow job submit -c homo_nn_multi_label_predict.json 

执行成功后,查看 homo_nn_0 组件的数据输出:

隐私计算FATE-多分类神经网络算法测试

可以看到算法输出的预测结果。

 

扫码关注有惊喜!

隐私计算FATE-多分类神经网络算法测试

本文来自网络,不代表企业资讯,产品资讯_博拉资讯立场,转载请注明出处。

作者: 博拉资讯

上一篇
下一篇
广告位

发表回复

返回顶部