parameters: (op)
return_statement: return [base_shape]
docstring: Shape function for the StringJoin op.
docstring_summary: Shape function for the StringJoin op.
docstring_tokens: Shape function for the StringJoin op .
function: def _StringJoinShape(op):
    """Shape function for the StringJoin op."""
    input_shapes = [x.get_shape() for x in op.inputs]
  
    # First check if all inputs are scalars.  In the next section
    # we may have *some* scalars and we will be broadcasting them
    if all([s.ndims == 0 for s in input_shapes]):
      return [tensor_shape.scalar()]
  
    base_shape = tensor_shape.unknown_shape()
    for shape in input_shapes:
      if shape.ndims != 0:
        base_shape = base_shape.merge_with(shape)
    return [base_shape]
function_tokens: def _StringJoinShape ( op ) : input_shapes = [ x . get_shape ( ) for x in op . inputs ] # First check if all inputs are scalars.  In the next section # we may have *some* scalars and we will be broadcasting them if all ( [ s . ndims == 0 for s in input_shapes ] ) : return [ tensor_shape . scalar ( ) ] base_shape = tensor_shape . unknown_shape ( ) for shape in input_shapes : if shape . ndims != 0 : base_shape = base_shape . merge_with ( shape ) return [ base_shape ]