def mat_mul(input_a, input_b, transpose_a: false, transpose_b: false, name: nil)
      input_a, input_b = apply_data_type_coercion(input_a, input_b)
      _op(:mat_mul, input_a, input_b, transpose_a: transpose_a, transpose_b: transpose_b, name: name)
    end
def mat_mul(input_a, input_b, transpose_a: false, transpose_b: false, name: nil)
      input_a, input_b = apply_data_type_coercion(input_a, input_b)
      _op(:mat_mul, input_a, input_b, transpose_a: transpose_a, transpose_b: transpose_b, name: name)
    end
Multiplies matrix a by matrix b, producing a * b. The inputs must, following any transpositions, be tensors of rank 2 .

 This operation supports broadcasting

 @param input_a tensor X
 @param input_b tensor Y

 Options:
 @option transpose_a Transpose matrix A first default (false)
 @option transpose_b Transpose matrix B first default (false)
 @option name Optional name
 @return Tensor