2017-01-23 2 views
0

Я пытаюсь реализовать слой, который не полностью подключен. У меня есть матрица, которая задает требуемую связность в переменной connectivity_matrix, которая представляет собой массив с множеством единиц и нулями.Не удалось ввести постоянную матрицу для умножения в Tensorflow

Путь, я в настоящее время пытается impliment слой является попарно перемножения весов, с помощью этой матрицы связности F:

enter image description here

Является ли это правильный способ сделать это в 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 

ответ

0

Маскировка нежелательных соединений в каждой итерации должны работать, но я не уверен, что свойства сходимости подобны. Это может быть хорошо для небольшой достаточной скорости обучения?

Другим подходом было бы наказание нежелательных весов в функции стоимости. Вы бы использовали маску-матрицу с 1-м при нежелательных соединениях, а 0 - по желаемым (или с более плавным переходом). Это будет умножаться на веса, квадрат/масштабирование и добавлено к функции стоимости. Это должно сходиться более плавно.

P.S .: Если вы достигли прогресса в этом, было бы здорово услышать ваши комментарии, поскольку я также работаю над этой проблемой.

+0

Метод, который я использовал выше, хорошо работал для моих целей. Однако я не добился дальнейшего прогресса – kmace

Смежные вопросы