0

如何在 Theano 中实现产品 AND?从数学上讲,这相当于乘以所有前一层(无权重)。我认为我的代码适用于 1 的批次大小,但我希望它适用于批次。

这是我尝试过的。请注意,我不知道我在做什么。

产品与功能

def prod_and(result, k):
    elif k[0][0] == 7:
        return theano.tensor.stack([
            [result[i][0] * result[i][1]*\
            result[i][2] * result[i][3]*\
            result[i][4] * result[i][5]*\
            result[i][6]] for i in np.arange(1)
    ])

产品和层

class ProdAnd(layers.BaseLayer):

    # Begin by initializing.
    def initialize(self,):
        super(ProdAnd, self).initialize()

    # Create output from input.
    def output(self, *input_values):
        return prod_and(input_values[0], self.input_shape)

我认为我的问题源于我无法理解 neupy 类型之间的关系(例如连接 neupy 层 {layers.0} 的内容)。此外,我不认为我理解 Theano 如何以不同于随机的方式实现批处理。

理想情况下,最好的答案将包括对产品和功能的修复,以及在这个特定示例中输入和输出如何工作的解释。

示范

您将使用它的一个示例是一个模糊神经网络,它利用了 Takagi-Sugeno 风格的模糊推理(查看第 5 层)。

在此处输入图像描述

我试图使问题变得简单,所以我将其分解为简单地将前一层的所有输入相乘。

方程由下式给出:

在此处输入图像描述

其中 x 是输入层,y 是输出层。对每个变量进行微分会留下前一层的另一个变量(因此计算起来并不困难)。

4

0 回答 0