///|
pub fn Tensor::softmax(self : Tensor, axis : Int) -> Tensor {
  let ax = normalize_axis(axis, self.shape.length())
  let outer = shape_size(self.shape[0:ax].to_owned())
  let dim = self.shape[ax]
  let inner = shape_size(self.shape[ax + 1:].to_owned())
  let out = Array::make(self.data.length(), 0.0)
  for o in 0.. maxv {
          maxv = v
        }
      }
      let mut total = 0.0
      for d in 0..