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