FATE联邦学习笔记(二)——如何在FATE上使用卷积

学习自定义算法模块。
根据github教程和官方视频学习。
因项目需要,希望在FATE上实现图像算法。
目前的理解:FATE上传的数据格式支持有限。数据是一维的,无法使用神经网络的卷积等操作。原打算通过: 数据上传(一维数据)——数据转换(转换为多维数据)——算法模块(卷积神经网络)这样的流程实现,自定义编写一个reshape的FATE模块。
目前的问题在于FATE使用的数据格式DTable。
尝试了另外一种思路,不需要关注FATE中的数据格式,在数据传入tensorflow或pytorch后变成张量,对张量进行维度变换即可。把问题放在tf层而不是FATE层解决。
解决方案:在定义模型时加入reshape层。以使用tensorflow作为计算引擎,
首先对数据进行处理,将原始的图像数据转换成一维数据(我转换成了CSV格式),格式符合FATE的要求(id,y,features…)。通过data_io模块上传。
在定义模型时,加入reshape层。例如,正常情况下是图像数据直接传入到resnet网络,现在在resnet网络前加入reshape层。如下。

model_1.add(Reshape((56, 56,3), input_shape=(9408, )))

数据通过reshape后变回多通道格式,即可正常接入resnet,VGG等。

model_1=keras.models.Sequential()
model_1.add(Reshape((28, 28,1), input_shape=(784, )))
model_1.add(Conv2D(8, (3, 3),padding='same', activation='relu'))
model_1.add(Conv2D(8, (3, 3),padding='same', activation='relu'))
model_1.add(MaxPooling2D(pool_size=(2, 2),padding='same'))
odel_1.add(Flatten())
model_1.add(Dense(10, activation='sigmoid'))
model_1.summary()
print(model_1.to_json())

图中未训练到收敛,但可以看到方案可行,跑通。
FATE联邦学习笔记(二)——如何在FATE上使用卷积_第1张图片
下图是部分网络参数,可以看到里面加入了卷积。
FATE联邦学习笔记(二)——如何在FATE上使用卷积_第2张图片

未解决问题:在训练时发现直接使用resnet50,VGG16等报错,尝试后发现与参数量有关,当参数量较大时报错。自行测试,参数量七百万时正常运行,一千四百万时报错。报错如下。
FATE联邦学习笔记(二)——如何在FATE上使用卷积_第3张图片
后续将FATE版本更新至1.4,这个错误没有再出现。(我怀疑这个问题没有解决,只是可接受的参数量规模比1.3更大了,增加参数量的话应该还会出现这种问题。)

你可能感兴趣的:(PYTHON,FATE联邦学习,RNN)