Binomial_CrossEnthophy
fixed rowwise/colswise mean/sum and implemented binomial_corssentrhopy. Next up is regression.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include "core/omp_config.h"
|
||||
|
||||
#include "utils/vector.h"
|
||||
#include "utils/matrix.h"
|
||||
|
||||
#include "numerics/neg.h"
|
||||
#include "numerics/exp.h"
|
||||
#include "numerics/add.h"
|
||||
#include "numerics/div.h"
|
||||
#include "numerics/sub.h"
|
||||
#include "numerics/mul.h"
|
||||
|
||||
namespace neural_networks{
|
||||
|
||||
template <typename T>
|
||||
struct Activation_Sigmoid{
|
||||
|
||||
utils::Matrix<T> _inputs;
|
||||
utils::Matrix<T> outputs;
|
||||
|
||||
utils::Matrix<T> dinputs;
|
||||
|
||||
void forward(const utils::Matrix<T>& inputs){
|
||||
_inputs = inputs;
|
||||
|
||||
outputs = numerics::neg(inputs);
|
||||
outputs = numerics::exp(outputs);
|
||||
outputs = numerics::add(outputs, T{1});
|
||||
outputs = numerics::div(T{1}, outputs);
|
||||
}
|
||||
void backward(const utils::Matrix<T>& dvalues){
|
||||
|
||||
dinputs = numerics::sub(T{1}, outputs);
|
||||
dinputs = numerics::mul(dvalues, dinputs);
|
||||
dinputs = numerics::mul(dinputs, outputs);
|
||||
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // end namespace neural_networks
|
||||
@@ -29,7 +29,7 @@ namespace neural_networks{
|
||||
utils::Matrix<T> exp_values = numerics::exp(numerics::sub_colwise(inputs, numerics::max_rowwise(inputs)));
|
||||
|
||||
// Normalize them for each sample
|
||||
utils::Matrix<T> probabilities = numerics::div_colwise(exp_values, numerics::sum_colwise(exp_values));
|
||||
utils::Matrix<T> probabilities = numerics::div_colwise(exp_values, numerics::sum_rowwise(exp_values));
|
||||
outputs = probabilities;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user