gpt4 book ai didi

python - TensorFlow 专家组合

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:19 25 4
gpt4 key购买 nike

我想在 TensowFlow 上实现一个通用模块,它接收 TensorFlow 模型列表(此处表示为专家)并从中构建专家混合,如下图所示 http://www.aclweb.org/anthology/C16-1133

enter image description here

所以这个模型得到一个输入x,它被馈送到不同的专家以及一个门控网络。最终输出对应于 ensemble output,它由不同专家的输出之和乘以来自门控网络的相应门控函数 gm 得出。所有的专家网络都是同时训练的。

重要的是这个模块适合批量训练。我正在寻找已经实现的东西并找到了这个 https://github.com/AmazaspShumik/Mixture-Models尽管它不在 TensorFlow 上。

所以现在我正在寻找有关构建此模块的最佳方法的指示和建议,即关于一些已经实现的特别适合此应用程序的 TF 层或包装器。

最佳答案

是的,您可以使用门控占位符在一体化架构中执行此操作。

让我们从一个简单的 tensorflow 概念代码开始,然后添加到它:

m = tf.Variable( [width,height] , dtype=tf.float32  ))
b = tf.Variable( [height] , dtype=tf.float32 ))
h = tf.sigmoid( tf.matmul( x,m ) + b )

想象一下,这是您的单一“专家”模型架构。我知道这是相当基础的,但它足以满足我们的说明目的。

我们要做的是将所有专家系统存储在矩阵的mb 中,并定义一个门控矩阵。

我们称门控矩阵为g。它将阻止特定的神经连接。神经连接在 m 中定义。这将是您的新配置

g = tf.placeholder( [width,height] , dtype=tf.float32 )
m = tf.Variable( [width,height] , dtype=tf.float32 )
b = tf.Variable( [height] , dtype=tf.float32 )
h = tf.sigmoid( tf.matmul( x, tf.multiply(m,g) ) + b )

g 是一个由 1 和 0 组成的矩阵。为你想要保留的每个神经连接插入一个 1,为你想要阻止的每个神经连接插入一个 0。如果你有 4 个专家系统,那么 1/4 的连接将为 1,3/4 将为 0。

如果您希望他们都平等投票,那么您需要将 g 的所有值设置为 1/4th。

关于python - TensorFlow 专家组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43845397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com