Вместо полносвязного слоя я хотел бы указать связность между узлами активации с помощью матрицы. Например:
У меня есть слой из 20 узлов, который подключен к слою из 10 узлов. Используя типичный полносвязный слой, моя матрица W
имеет размер 20 x 10 с вектором b
размера 10.
Моя активация выглядит примерно так: relu(Wx + b)
Если бы у меня была матрица единиц и нулей того же размера, что и W
, назовем ее F
, я мог бы выполнить попарное умножение между W
и F
, чтобы удалить связи между моим первым слоем (20 узлов) и моим вторым слоем (10 узлов). )
Вот мой текущий код:
F.shape
# (20, 10)
import tflearn
import tensorflow as tf
input = tflearn.input_data(shape=[None, num_input])
first = tflearn.fully_connected(input, 20, activation='relu')
# Here is where I want to use a custom function, that uses my F matrix
# I dont want the second layer to be fully connected to the first,
# I want only connections that are ones (and not zeros) in F
# Currently:
second = tflearn.fully_connected(first, 10, activation='relu')
# What I want:
second = tflearn.custom_layer(first, my_fun)
Где my_fun дает мне: relu( (FW)X + b)
и FW
— попарное умножение
Как создать эту функцию? Кажется, я не могу найти примеры tflearn того, как это делается, но я также знаю, что tflearn также позволяет использовать базовые функции тензорного потока.