Real bptt_unit_activation(Group *group,int unit,int tick) { if (group->activationType==LOGISTIC_ACTIVATION) return (CLIP(sigmoid_activation(group->inputs[tick][unit], group->temperature), LOGISTIC_MIN, LOGISTIC_MAX)); else if (group->activationType==TANH_ACTIVATION) return (CLIP(tanh_activation(group->inputs[tick][unit], group->temperature), TANH_MIN, TANH_MAX)); else if (group->activationType==FAST_LOGISTIC_ACTIVATION) return (CLIP(fast_sigmoid_activation(group->inputs[tick][unit], group->temperature), TANH_MIN, TANH_MAX)); else if (group->activationType==LINEAR_ACTIVATION) return (linear_activation(group->inputs[tick][unit], group->temperature)); else if (group->activationType==STEP_ACTIVATION) return (step_activation(group->inputs[tick][unit], group->temperature)); else { Choke0("Group %s does not have legal activationType",group->name); exit(-1); return 0; /* just so stupid compilers don't complain */ } }
void Reservoir::activation(VectorXd &inputs, VectorXd &results) { switch (this->activation_function) { case TANH: return tanh_activation(inputs, results); break; case LINEAR: return linear_activation(inputs,results); break; default: //should throw an exception but we will put this off till later //output something throw OTLException("Wrong activation function specified"); } }