Пакетный продукт и слой Theano Neupy / Theano - PullRequest
0 голосов
/ 30 апреля 2018

Как мне внедрить продукт И в Theano? Математически это эквивалент умножения всего предыдущего слоя (без весов). Я думаю, что мой код работает для пакета размером 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 {layer.0}). Также я не думаю, что понимаю, как Theano реализует пакет иначе, чем стохастик.

В идеале лучшим ответом будет исправление продукта и функции, а также объяснение того, как входы и выходы работают в этом конкретном примере.

Демонстрация

Примером, где вы могли бы использовать это, является сеть нечетких нейро, которая использует нечеткий вывод в стиле Такаги-Сугено (см. Слой 5).

enter image description here

Я пытаюсь облегчить задачу, поэтому я разбил ее на простое умножение всех входных данных предыдущего слоя.

Уравнение определяется по формуле:

enter image description here

где x - входной слой, а y - выходной. Дифференциация по каждой переменной оставляет другую переменную из предыдущего уровня (так что это не сложное вычисление).

...