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

3 篇文章 0 订阅
2 篇文章 0 订阅

学习自定义算法模块。
根据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())

图中未训练到收敛,但可以看到方案可行,跑通。
在这里插入图片描述
下图是部分网络参数,可以看到里面加入了卷积。
在这里插入图片描述

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值