mirror of
https://github.com/Relintai/MLPP.git
synced 2025-02-10 16:10:06 +01:00
"Vectorized" sinh & cosh
This commit is contained in:
parent
14251a7dbc
commit
b003b56dad
@ -532,76 +532,32 @@ namespace MLPP{
|
||||
}
|
||||
|
||||
std::vector<double> Activation::sinh(std::vector<double> z, bool deriv){
|
||||
if(deriv){
|
||||
std::vector<double> deriv;
|
||||
deriv.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
deriv[i] = sinh(z[i], 1);
|
||||
}
|
||||
return deriv;
|
||||
}
|
||||
std::vector<double> a;
|
||||
a.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
a[i] = sinh(z[i]);
|
||||
}
|
||||
return a;
|
||||
if(deriv){ return cosh(z); }
|
||||
LinAlg alg;
|
||||
return alg.scalarMultiply(0.5, alg.subtraction(alg.exp(z), alg.exp(alg.scalarMultiply(-1, z))));
|
||||
}
|
||||
|
||||
std::vector<std::vector<double>> Activation::sinh(std::vector<std::vector<double>> z, bool deriv){
|
||||
if(deriv){
|
||||
std::vector<std::vector<double>> deriv;
|
||||
deriv.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
deriv[i] = sinh(z[i], 1);
|
||||
}
|
||||
return deriv;
|
||||
}
|
||||
std::vector<std::vector<double>> a;
|
||||
a.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
a[i] = sinh(z[i]);
|
||||
}
|
||||
return a;
|
||||
if(deriv){ return cosh(z); }
|
||||
LinAlg alg;
|
||||
return alg.scalarMultiply(0.5, alg.subtraction(alg.exp(z), alg.exp(alg.scalarMultiply(-1, z))));
|
||||
}
|
||||
|
||||
double Activation::cosh(double z, bool deriv){
|
||||
if(deriv){ return cosh(z); }
|
||||
if(deriv){ return sinh(z); }
|
||||
return 0.5 * (exp(z) + exp(-z));
|
||||
}
|
||||
|
||||
std::vector<double> Activation::cosh(std::vector<double> z, bool deriv){
|
||||
if(deriv){
|
||||
std::vector<double> deriv;
|
||||
deriv.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
deriv[i] = sinh(z[i], 1);
|
||||
}
|
||||
return deriv;
|
||||
}
|
||||
std::vector<double> a;
|
||||
a.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
a[i] = cosh(z[i]);
|
||||
}
|
||||
return a;
|
||||
if(deriv){ return sinh(z); }
|
||||
LinAlg alg;
|
||||
return alg.scalarMultiply(0.5, alg.addition(alg.exp(z), alg.exp(alg.scalarMultiply(-1, z))));
|
||||
}
|
||||
|
||||
std::vector<std::vector<double>> Activation::cosh(std::vector<std::vector<double>> z, bool deriv){
|
||||
if(deriv){
|
||||
std::vector<std::vector<double>> deriv;
|
||||
deriv.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
deriv[i] = cosh(z[i], 1);
|
||||
}
|
||||
return deriv;
|
||||
}
|
||||
std::vector<std::vector<double>> a;
|
||||
a.resize(z.size());
|
||||
for(int i = 0; i < z.size(); i++){
|
||||
a[i] = cosh(z[i]);
|
||||
}
|
||||
return a;
|
||||
if(deriv){ return sinh(z); }
|
||||
LinAlg alg;
|
||||
return alg.scalarMultiply(0.5, alg.addition(alg.exp(z), alg.exp(alg.scalarMultiply(-1, z))));
|
||||
}
|
||||
|
||||
double Activation::tanh(double z, bool deriv){
|
||||
|
12
main.cpp
12
main.cpp
@ -350,16 +350,16 @@ int main() {
|
||||
|
||||
// Testing for new Functions
|
||||
double z_s = 4;
|
||||
std::cout << avn.swish(z_s) << std::endl;
|
||||
std::cout << avn.swish(z_s, 1) << std::endl;
|
||||
std::cout << avn.sinh(z_s) << std::endl;
|
||||
std::cout << avn.sinh(z_s, 1) << std::endl;
|
||||
|
||||
std::vector<double> z_v = {4, 5};
|
||||
alg.printVector(avn.swish(z_v));
|
||||
alg.printVector(avn.swish(z_v, 1));
|
||||
alg.printVector(avn.sinh(z_v));
|
||||
alg.printVector(avn.sinh(z_v, 1));
|
||||
|
||||
std::vector<std::vector<double>> Z_m = {{4, 5}};
|
||||
alg.printMatrix(avn.swish(Z_m));
|
||||
alg.printMatrix(avn.swish(Z_m, 1));
|
||||
alg.printMatrix(avn.sinh(Z_m));
|
||||
alg.printMatrix(avn.sinh(Z_m, 1));
|
||||
// alg.printMatrix(alg.pinverse({{1,2}, {3,4}}));
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user