2017-05-31 46 views
4

在下面的代碼中,當我打印conv_out.get_shape()它給我輸出(1,14,14,1)。我想要乘以第二個第三和第四維(14*14*1)。我該怎麼做?如何乘以張量的維數?

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] 

回答

2

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

應該做的工作。

或者,如果你想讓它內部的tensorflow圖,是這樣的:

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