def prod(input_a, axis = nil, name: nil, keepdims: false)
      check_allowed_types(axis, TensorStream::Ops::INTEGER_TYPES)
      input_a = TensorStream.convert_to_tensor(input_a)
      return input_a if input_a.shape.scalar?
      axis = cast_axis(input_a, axis)
      _op(:prod, input_a, axis, name: name, keepdims: keepdims)
    end
def prod(input_a, axis = nil, name: nil, keepdims: false)
      check_allowed_types(axis, TensorStream::Ops::INTEGER_TYPES)
      input_a = TensorStream.convert_to_tensor(input_a)
      return input_a if input_a.shape.scalar?
      axis = cast_axis(input_a, axis)
      _op(:prod, input_a, axis, name: name, keepdims: keepdims)
    end
Computes the product of elements across dimensions of a tensor.
 Reduces input_tensor along the dimensions given in axis. Unless keepdims is true, the rank of the
 tensor is reduced by 1 for each entry in axis. If keepdims is true, the reduced dimensions are
 retained with length 1.
 If axis has no entries, all dimensions are reduced, and a tensor with a single element is returned.


 @param input_a tensor X
 @param axis tensor X (of type INTEGER_TYPES)

 Options:
 @option name Optional name
 @option keepdims If true, retains reduced dimensions with length 1. default (false)
 @return Tensor