是的,您可以通过使用门控占位符在一体化架构中执行此操作。
让我们从一个像这样的简单张量流概念代码开始,然后添加到它:
m = tf.Variable( [width,height] , dtype=tf.float32 ))
b = tf.Variable( [height] , dtype=tf.float32 ))
h = tf.sigmoid( tf.matmul( x,m ) + b )
想象一下这是您的单一“专家”模型架构。我知道这是相当基本的,但它足以满足我们的说明目的。
我们要做的是将所有专家系统存储在矩阵中m and b并定义门控矩阵。
我们称之为门控矩阵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/4。