Как мне внедрить продукт И в 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).
Я пытаюсь облегчить задачу, поэтому я разбил ее на простое умножение всех входных данных предыдущего слоя.
Уравнение определяется по формуле:
где x - входной слой, а y - выходной. Дифференциация по каждой переменной оставляет другую переменную из предыдущего уровня (так что это не сложное вычисление).