softmaxRows static method

Tensor2D softmaxRows(
  1. Tensor2D x
)

Implementation

static Tensor2D softmaxRows(Tensor2D x) {
  final out = Tensor2D.zeros(x.rows, x.cols);
  final od = out.data;
  final xd = x.data;
  final cols = x.cols;
  for (var i = 0; i < x.rows; i++) {
    final base = i * cols;
    var maxv = -double.infinity;
    for (var j = 0; j < cols; j++) {
      final v = xd[base + j];
      if (v > maxv) maxv = v;
    }
    var sum = 0.0;
    for (var j = 0; j < cols; j++) {
      final e = math.exp(xd[base + j] - maxv);
      od[base + j] = e;
      sum += e;
    }
    final inv = 1.0 / sum;
    for (var j = 0; j < cols; j++) {
      od[base + j] *= inv;
    }
  }
  return out;
}