python - Reshape batch of tensors into batch of vectors in TensorFlow -


during creating calculation graph have tensor x e.g. shape of [-1, a, b, c] , reshape [-1, a*b*c] tried way:

n = functools.reduce(operator.mul, x.shape[1:], 1) tf.reshape(x, [-1, n]) 

but i've got error:

typeerror: unsupported operand type(s) *: 'int' , 'dimension' 

my question is: there tensorflow operation?

as error message tells you, there problem types. if create tensorflow placeholder, e.g. with

>>> import tensorflow tf >>> x = tf.placeholder(tf.float16, shape=(none, 3,7,4)) 

and call shape on it, return value is

>>> x.shape tensorshape([dimension(none), dimension(3), dimension(7), dimension(4)]) 

and each element a

>>> x.shape[1] <class 'tensorflow.python.framework.tensor_shape.dimension'> 

i.e. dimension class of tensorflow. naturally, operator.mul function doesn't know such type. luckily, tf.tensorshape has as_list() function, returns shape list of integers.

>>> x.shape.as_list() [none, 3, 7, 4] 

with that, can calculate number of elements n, you're used to:

>>> import functools, operator >>> n = functools.reduce(operator.mul, x.shape.as_list()[1:], 1) >>> n  84 >>> y = tf.reshape(x, [-1, n]) 

Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -