code: def get_shape_list(tensor, expected_rank=None, name=None):
      """Returns a list of the shape of tensor, preferring static dimensions.
  
      Args:
        tensor: A tf.Tensor object to find the shape of.
        expected_rank: (optional) int. The expected rank of `tensor`. If this is
          specified and the `tensor` has a different rank, and exception will be
          thrown.
        name: Optional name of the tensor for the error message.
  
      Returns:
        A list of dimensions of the shape of tensor. All static dimensions will
        be returned as python integers, and dynamic dimensions will be returned
        as tf.Tensor scalars.
      """
      if expected_rank is not None:
          assert_rank(tensor, expected_rank, name)
  
      shape = tensor.shape.as_list()
  
      non_static_indexes = []
      for index, dim in enumerate(shape):
          if dim is None:
              non_static_indexes.append(index)
  
      if not non_static_indexes:
          return shape
  
      dyn_shape = tf.shape(tensor)
      for index in non_static_indexes:
          shape[index] = dyn_shape[index]
      return shape
  
file_path: autodist/examples/benchmark/utils/tf_utils.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import six
  import tensorflow
  from utils import activations
label_desc: Use image node_id 5 for calling a global function with example usage: get_shape_list(tensor, expected_rank, name) and returns: shape, shape