class NN::Softmax

Public Class Methods

new(nn) click to toggle source
# File lib/nn.rb, line 362
def initialize(nn)
  @nn = nn
end

Public Instance Methods

backward(y) click to toggle source
# File lib/nn.rb, line 370
def backward(y)
  (@out - y) / @nn.batch_size
end
forward(x) click to toggle source
# File lib/nn.rb, line 366
def forward(x)
  @out = NMath.exp(x) / NMath.exp(x).sum(1).reshape(x.shape[0], 1)
end
loss(y) click to toggle source
# File lib/nn.rb, line 374
def loss(y)
  ridge = 0.5 * @nn.weight_decay * @nn.weights.reduce(0){|sum, weight| sum + (weight ** 2).sum}
  -(y * NMath.log(@out + 1e-7)).sum / @nn.batch_size + ridge
end