class_docstr: Given min_val: (R, G, B) and max_val: (R,G,B),
  will normalize each channel of the th.*Tensor to
  the provided min and max values.
  
  Works by calculating :
      a = (max'-min')/(max-min)
  
      b = max' - a * max
  
      new_value = a * value + b
  where min' & max' are given values, 
  and min & max are observed min/max for each channel
  
  :param min_val: (float or integer):
      Lower bound of normalized tensor
  :param max_val: (float or integer):
      Upper bound of normalized tensor
  
  Example:
      >>> x = th.rand(3,5,5)
      >>> rn = RangeNormalize((0,0,10),(1,1,11))
      >>> x_norm = rn(x)
  
  Also works with just one value for min/max:
      >>> x = th.rand(3,5,5)
      >>> rn = RangeNormalize(0,1)
      >>> x_norm = rn(x)
docstr: Normalize a tensor between a min and max value
docstr_tok: ["Normalize","a","tensor","between","a","min","and","max","value"]
code: def __init__(self, min_val, max_val):
      """
      Normalize a tensor between a min and max value
      """
      self.min_val = min_val
      self.max_val = max_val
  
imports: import os
  import random
  import math
  import numpy
  import torch
label_desc: Use image node_id 1 to create a new RangeNormalize object  with example: obj = RangeNormalize(min_val, max_val)