Как построить вес, привязанный к 3 различным фильтрам? - PullRequest
0 голосов
/ 08 июня 2019

Я использую один слой свертки и один полностью связанный слой в CNN. где как есть два выходных узла. Я использую один входной канал и 3 фильтра канала в сверточном слое (1D свертка). Когда я сохраняю окончательную весовую матрицу полностью связанного слоя, она имеет форму (36,2). В то время как один вход имеет 12 функций. Теперь я хочу построить веса фильтра, прикрепленные к 1-му каналу, второму каналу и третьему каналу отдельно. Если я нанесу первые 12 весов, значит ли это, что они соответствуют 1 классу первого канала?

`
def weight_variable(shape):
    initial = tf.truncated_normal(shape, mean=0, stddev=0.1)
    return tf.Variable(initial)

def conv1d(input, filter):
    return tf.nn.conv1d(input, filter, stride=1, padding='SAME')

x = tf.placeholder(tf.float32, [None, FLAGS.image_width])
y_ = tf.placeholder(tf.float32, [None, 2])

input = tf.reshape(x, [-1, FLAGS.image_width, FLAGS.input_channel])
filter = weight_variable([FLAGS.filter_width,  FLAGS.input_channel, 
FLAGS.filter_channel])

conv_out = tf.nn.tanh(conv1d(input, filter))



#Fully_Connected_layer
dim = conv_out.get_shape().as_list()

conv_re = tf.reshape(conv_out, (-1, dim[1]*dim[2]))
W_fc = weight_variable([dim[1]*dim[2], 2])
logits = tf.matmul(conv_re, W_fc)
y_prime = tf.nn.softmax(logits)


#Cross_entropy:
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits, 
labels= y_)
loss = tf.reduce_mean(cross_entropy)
optimizer = tf.train.GradientDescentOptimizer(FLAGS.rLearn).minimize(loss)


#Check_predictions:
correct_prediction = tf.equal(tf.argmax(y_prime, axis=1),tf.argmax(y_, 
axis=1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))`




`W = W.eval()  #shape (36,2)
W1 = W[0:12,0]
W2 = W[12:24,0]
W3 = W[24:36,0]`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...