2017-05-31 11 views
4

Im folgenden Code, wenn ich conv_out.get_shape() drucke gibt es mir Ausgabe (1,14,14,1). Ich möchte die zweite dritte und vierte Dimension multiplizieren (14*14*1). Wie kann ich das machen? Wie man Dimensionen eines Tensors multipliziert?

input = tf.Variable(tf.random_normal([1,28,28,1])) 
filter = tf.Variable(tf.random_normal([5,5,1,1])) 

def conv2d(input,filter): 
    return tf.nn.conv2d(input,filter,strides=[1,2,2,1],padding='SAME') 

conv_out = conv2d(input,filter) 
sess = tf.InteractiveSession() 
sess.run(tf.initialize_all_variables()) 

print conv_out.get_shape() 
print conv_out.get_shape().as_list()[2] 

Antwort

2

so etwas wie

import numpy as np 
np.asarray(conv_out.get_shape().as_list()[1:]).prod() 

sollte die Arbeit machen.

Oder, wenn Sie es intern an die tensorflow Graph wollen, so etwas wie:

tf_shape = tf.shape(conv_out) 
tf_shape_prod = tf.reduce_prod(tf_shape[1:]) 
Verwandte Themen