Я пытаюсь реализовать слой, который не полностью подключен. У меня есть матрица, которая задает требуемую связность в переменной connectivity_matrix
, которая представляет собой массив с множеством единиц и нулями.Не удалось ввести постоянную матрицу для умножения в Tensorflow
Путь, я в настоящее время пытается impliment слой является попарно перемножения весов, с помощью этой матрицы связности F
:
Является ли это правильный способ сделать это в tensorflow? Вот то, что я до сих пор
import numpy as np
import tensorflow as tf
import tflearn
num_input = 10
num_layer1 = 313
num_output = 700
# For example:
connectivity_matrix = np.array(np.random.choice([0, 1], size=(num_layer1, num_output)), dtype='float32')
input = tflearn.input_data(shape=[None, num_input])
# Here is where I specify the connectivity in tensorflow
connectivity = tf.constant(connectivity_matrix, shape=[num_layer1, num_output])
# One basic, fully connected layer
layer1 = tflearn.fully_connected(input, num_layer1, activation='relu')
# Here is where I want to have a non-fully connected layer
W = tf.Variable(tf.random_uniform([num_layer1, num_output]))
b = tf.Variable(tf.zeros([num_output]))
# so take a fully connected W, and do a pairwise multiplication with my tf_connectivity matrix
W_filtered = tf.mul(connectivity, W)
output = tf.matmul(layer1, W_filtered) + b
Метод, который я использовал выше, хорошо работал для моих целей. Однако я не добился дальнейшего прогресса – kmace