Like print(), but recognizes tensors and arrays and show
    more details about them.

    Example:
        hl.write("My Tensor", my_tensor)
    
        Prints:
            My Tensor  float32 (10, 3, 224, 224)  min: 0.0  max: 1.0

def write(*args):
    """Like print(), but recognizes tensors and arrays and show
    more details about them.

    Example:
        hl.write("My Tensor", my_tensor)
    
        Prints:
            My Tensor  float32 (10, 3, 224, 224)  min: 0.0  max: 1.0
    """
    s = ""
    for a in args:
        # Convert tensors to Numpy arrays
        a = to_data(a)

        if isinstance(a, np.ndarray):
            # Numpy Array
            s += ("\t" if s else "") + "Tensor  {} {}  min: {:.3f}  max: {:.3f}".format(
                a.dtype, a.shape, a.min(), a.max())
            print(s)
            s = ""
        elif isinstance(a, list):
            s += ("\t" if s else "") + "list    len: {}  {}".format(len(a), a[:10])
        else:
            s += (" " if s else "") + str(a)
    if s:
        print(s)