Placeholder can be defined as: tf.placeholder(tf.float32, shape=(1, 16, 64, 64, 1), name='real_node_a') or tf.placeholder(tf.float32, shape=(None, None, None, None, None), name='real_node_a') If you want to read shape from None, use: h = tf.shape(inputs)[2] w = tf.shape(inputs)[3] If you want to read shape from numbers, use: nb, nt = inputs.get_shape().as_list()[0:2] sometimes some nodes in the graph require integer input instead of None, in that case you must hard code placeholder with numbers and use get_shape None provides more flexibility but might not work with all.