FATE icon indicating copy to clipboard operation
FATE copied to clipboard

Reader及DataTransform组件的配套使用问题

Open MiKKiYang opened this issue 3 years ago • 3 comments

现在fate编排一个dsl、首先是reader、然后需要接一个datatransform(也就是以前的dataio)、然后再接其他的一些算法组件 其中datatransform这个组件主要就是做一些数据预处理、对数据做一些不同的预处理功能、类似定义标签列、指定标签列类型、指定数据分隔符等等

但是我测试了下、如果dsl中,reader组件后面不接datatransform、直接接类似lr这个算法组件、会直接报错,报错如下: image

报错的原因在于数据类型不对、因为datatransform里有一个操作、就是会将从reader中读到的数据、转换成federatedml.feature.instance.Instance这样一个数据结构、只要执行了这个操作、dsl中后面的算法组件如lr就可以执行成功,如下图: image

但是 “将从reader中读到的数据、转换成federatedml.feature.instance.Instance这样一个数据结构” 这个转换操作、是datatransform里面的一个必做操作、就是说即使datatransform组件暴露出来的任何参数用户都不配置、也会执行将reader读出来的数据转换为federatedml.feature.instance.Instance这样一个数据结构的操作

那么为啥不考虑将这个:“将reader读出来的数据转换为federatedml.feature.instance.Instance这样一个数据结构” 的操作做到reader里面呢? 这样的话,如果我不想做任何数据预处理操作、即使是指定标签值(y列)我都不做,那么我可以直接配置由reader -> intersection -> lr这样一个dsl执行成功一个训练,而不是必须要配置一个 reader -> datatransfrom -> intersection -> lr这样一个dsl的同时datatransform里面的参数却一个都不配置,这个情况下,如果datatransform一个参数我都不配置但是还必须在dsl中配置一个datatransfrom、就有点让建模人员感觉有点奇怪

补充: datatransform这个组件对于建模人员来说,只应该关注一些数据预处理的操作、但是这个组件里面的类型转换操作应该是建模人员不关心的、但是现在datatransform里面的数据转换操作却造成了建模人员必须去配置一个datatransform,所以我的问题集中在、datatransform组件内部的类型转换动作是不是太强制了?如果建模人员准备的训练数据很好、不需要做数据预处理、但是却还要必须配置datatransform这个组件、这等于是把建模人员不关心的fate内部数据结构的转换暴露给建模人员、所以是不是可以把这里面的转换操作移动出datatransform组件中?

MiKKiYang avatar May 30 '22 07:05 MiKKiYang

猜测Reader应该只是一个抽象的模块,并没有实际功能

SennriSyunnga avatar Jun 21 '22 02:06 SennriSyunnga

我也觉得是不是直接把 reader 和 datatransform 两个组件合并就行了,降低组件复杂性

zlt2000 avatar Jun 24 '22 01:06 zlt2000

我也觉得是不是直接把 reader 和 datatransform 两个组件合并就行了,降低组件复杂性

那你看到现在的fate可以支持拿图片文件夹当输入可能会昏过去哇。抽象到一起就会出现data_transform对这种两种性质的输出要有不同的表现,而Reader作为一个数据源的抽象还是可以理解的。不过Fate应该也内置了对图片的处理,就是没体现在模块上……

SennriSyunnga avatar Jun 28 '22 06:06 SennriSyunnga