"Vectorized" sinh & cosh

This commit is contained in:
novak_99 2021-05-25 23:01:03 -07:00
parent 14251a7dbc
commit b003b56dad
3 changed files with 19 additions and 63 deletions

View File

@ -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){

BIN
a.out

Binary file not shown.

View File

@ -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}}));