26 template<
typename Real_t>
27 void TReference<Real_t>::IdentityDerivative(TMatrixT<Real_t> & B,
28 const TMatrixT<Real_t> &)
34 for (
size_t i = 0; i < m; i++) {
35 for (
size_t j = 0; j < n; j++) {
42 template<
typename Real_t>
43 void TReference<Real_t>::Relu(TMatrixT<Real_t> &A)
49 for (
size_t i = 0; i < m; i++) {
50 for (
size_t j = 0; j < n; j++) {
51 A(i,j) = std::max((Real_t) 0.0, A(i,j));
57 template<
typename Real_t>
58 inline void TReference<Real_t>::ReluDerivative(TMatrixT<Real_t> & B,
59 const TMatrixT<Real_t> & A)
65 for (
size_t i = 0; i < m; i++)
67 for (
size_t j = 0; j < n; j++)
69 B(i,j) = (A(i,j) < 0) ? 0.0 : 1.0;
75 template<
typename Real_t>
76 void TReference<Real_t>::Sigmoid(TMatrixT<Real_t> & A)
82 for (
size_t i = 0; i < m; i++) {
83 for (
size_t j = 0; j < n; j++) {
84 Real_t sig = 1.0 / (1.0 + std::exp(-A(i,j)));
91 template<
typename Real_t>
92 inline void TReference<Real_t>::SigmoidDerivative(TMatrixT<Real_t> & B,
93 const TMatrixT<Real_t> & A)
99 for (
size_t i = 0; i < m; i++) {
100 for (
size_t j = 0; j < n; j++) {
101 Real_t sig = 1.0 / (1.0 + std::exp(-A(i,j)));
102 B(i,j) = sig * (1.0 - sig);
108 template<
typename Real_t>
109 inline void TReference<Real_t>::Tanh(TMatrixT<Real_t> & B)
115 for (
size_t i = 0; i < m; i++) {
116 for (
size_t j = 0; j < n; j++) {
117 Real_t t = tanh(B(i,j));
124 template<
typename Real_t>
125 inline void TReference<Real_t>::TanhDerivative(TMatrixT<Real_t> & B,
126 const TMatrixT<Real_t> & A)
132 for (
size_t i = 0; i < m; i++) {
133 for (
size_t j = 0; j < n; j++) {
134 Real_t t = tanh(A(i,j));
141 template<
typename Real_t>
142 inline void TReference<Real_t>::SymmetricRelu(TMatrixT<Real_t> & B)
148 for (
size_t i = 0; i < m; i++) {
149 for (
size_t j = 0; j < n; j++) {
150 B(i,j) = fabs(B(i,j));
156 template<
typename Real_t>
157 inline void TReference<Real_t>::SymmetricReluDerivative(TMatrixT<Real_t> & B,
158 const TMatrixT<Real_t> & A)
164 for (
size_t i = 0; i < m; i++) {
165 for (
size_t j = 0; j < n; j++) {
166 B(i,j) = (A(i,j) < 0.0) ? -1.0 : 1.0;
172 template<
typename Real_t>
173 inline void TReference<Real_t>::SoftSign(TMatrixT<Real_t> & A)
179 for (
size_t i = 0; i < m; i++) {
180 for (
size_t j = 0; j < n; j++) {
182 A(i,j) = x / (1 + fabs(x));
188 template<
typename Real_t>
189 inline void TReference<Real_t>::SoftSignDerivative(TMatrixT<Real_t> & B,
190 const TMatrixT<Real_t> & A)
196 for (
size_t i = 0; i < m; i++) {
197 for (
size_t j = 0; j < n; j++) {
198 Real_t x = 1.0 + fabs(A(i,j));
199 B(i,j) = 1.0 / (x * x);
205 template<
typename Real_t>
206 inline void TReference<Real_t>::Gauss(TMatrixT<Real_t> & A)
212 for (
size_t i = 0; i < m; i++) {
213 for (
size_t j = 0; j < n; j++) {
215 A(i,j) = exp(- x * x);
221 template<
typename Real_t>
222 inline void TReference<Real_t>::GaussDerivative(TMatrixT<Real_t> & B,
223 const TMatrixT<Real_t> & A)
229 for (
size_t i = 0; i < m; i++) {
230 for (
size_t j = 0; j < n; j++) {
232 B(i,j) = - 2.0 * x * exp(- x * x);