2016-04-20 6 views
3

Итак, вот что я хочу сделать:Tensorflow: форма доступа заполнителе после слоя NN в коде

Прямо сейчас, я padding = 'SAME' для всех моих нейросетевых слоев. Я хотел бы сделать свой код более универсальным, поэтому я могу строить свои сети с произвольными paddings, и я не хочу, чтобы рассчитать, насколько велики выходные тензоры слоев моей сети. Я хотел бы просто получить доступ к измерению при инициализации/запуске времени, то, как tf.nn функции, очевидно, сделать внутренне, так что я могу инициализировать мои веса и смещение тензоры в правильном измерении ...

Итак,

Как я получаю доступ к функции/форме «фигуры» объекта вывода свертки?

ответ

3

Существует два вида форм: tensor.get_shape(), который дает статическую форму, вычисленную оболочками Python во время построения графика (по возможности), и tf.shape(tensor), который является оператором, который может быть выполнен во время выполнения, чтобы получить форму тензора (всегда возможно). Обе эти работы предназначены для сверток.

a = tf.Variable(tf.ones((1, 3, 3, 1))) 
b = tf.Variable(tf.ones((3, 3, 1, 1))) 
c = tf.nn_ops.conv2d(a, b, [1, 1, 1, 1], padding="VALID") 
sess = create_session() 
sess.run(tf.initialize_all_variables()) 
print c.get_shape() 
print sess.run(tf.shape(c)) 

Это дает

(1, 1, 1, 1) 
[1 1 1 1] 
+0

Хорошо, я думаю, что это поможет мне близко, но я не уверен, потому что я пытаюсь использовать форму при построении графика (т.е. до инициализации) , Я включу пример кода, который я пытаюсь сделать, когда вернусь. – bordeo

+0

c.get_shape() работает до инициализации –

+0

Удивительно, спасибо. (просто побежал, работал) – bordeo

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