加载中…
个人资料
Tsingzao-于廷照
Tsingzao-于廷照
  • 博客等级:
  • 博客积分:0
  • 博客访问:41,258
  • 关注人气:12
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Keras实现MoE(Mixture of Experts,混合专家)模型

(2017-03-05 19:57:49)
分类: Keras Tensorflow
最近看Google的视频挑战赛偶然发现MoE模型效果尤其的好,后来查看文献发现应该是Jordan的成果,ICLR2017中Hinton和Jeff Dean又联手推出了Sparsely-Gated Mixture-of-Experts Layer,目测要火啊。
打算用Keras实现一下MoE模型。
Keras实现MoE(Mixture <wbr>of <wbr>Experts,混合专家)模型
MoE原理用原文中的一幅图就可以清晰的缕清,实现的Keras代码如下:

from keras.models import Model
from keras.layers import Dense, Input, Reshape, merge, Lambda
from keras import backend as K

def slice(x,expert_num):
    return x[:,:,:expert_num]
def reduce(x, axis):
    return K.sum(x, axis=2)
input_vector = Input(shape=(2048,))

gate = Dense(nb_class*(expert_num+1), activation='softmax')(input_vector)
gate = Reshape((nb_class, expert_num+1))(gate)
gate = Lambda(slice, output_shape=(nb_class, expert_num), arguments={'expert_num':expert_num})(gate)

expert = Dense(nb_class*expert_num, activation='sigmoid')(input_vector)
expert = Reshape((nb_class, expert_num))(expert)

output = merge([gate, expert], mode='mul')
output = Lambda(reduce, output_shape=(nb_class,), arguments={'axis': 2})(output)

model = Model(input=input_vector, output=output)

model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='sgd')
model.fit(X_train, y_train, batch_size=32, verbose=1, nb_epoch=10)
score = model.evaluate(X_test, y_test, batch_size=32, verbose=1)
print(score[1])

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有