假如我有2台服务器A和B,我建立了一个相同结构的Sequential模型,同时在2个服务器上跑, 保存后得到了2个h5的文件,我是否能将这2个文件进行合并,得到一个新的结果,来提升成功率。
我是在看到了A3C的理念后,想到的,希望能在多台服务器进行学习,然后和主服务器通讯,更新结果,并获取新的模型数据,再进行下一轮学习。
在网上搜索了很久没有看到类似的情况,不知道是用model.updates还是model.add_update,或其他什么方法?是只更新权重还是包含优化器状态?
希望有人帮助得到解答,谢谢,祝大家新年快乐!
2个回答
这些天我思考了一下,keras在fit的时候,应该也是进行了数据更新,可fit部分的代码确实没看懂。。。。
找到到一个类似的代码,如下:
updates = self.rms_optimizer.get_updates(self.model.trainable_weights, [], loss)
K.function([self.model.input, self.discounted_r], [], updates=updates)
这个是更新了loss,keras里面最重要的是权重还是loss?这2者的关系很困惑,fit学出来保存的好像是权重,loss呢。。。
之前的貌似被吞了,现在补上。。。
SofaSofa数据科学社区DS面试题库 DS面经最简单的方法就是直接把结果合并,类似于stacking
每个服务器都训练出一个模型,每个模型的预测值的平均值就可以作为你合并之后的结果
或者也可以ensemble,把每个模型的输出值作为ensemble模型的输入值,再训练一个小模型
SofaSofa数据科学社区DS面试题库 DS面经