MCPcopy Create free account
hub / github.com/davisking/dlib / silu_gradient

Function silu_gradient

dlib/cuda/cpu_dlib.cpp:2280–2305  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2278 }
2279
2280 void silu_gradient (
2281 tensor& grad,
2282 const tensor& src,
2283 const tensor& gradient_input
2284 )
2285 {
2286 const auto g = grad.host();
2287 const auto s = src.host();
2288 const auto in = gradient_input.host();
2289 if (is_same_object(grad, gradient_input))
2290 {
2291 for (size_t i = 0; i < src.size(); ++i)
2292 {
2293 const auto sig_s = impl::sigmoid(s[i]);
2294 g[i] = in[i] * (sig_s * (1.0f + s[i] * (1.0f - sig_s)));
2295 }
2296 }
2297 else
2298 {
2299 for (size_t i = 0; i < src.size(); ++i)
2300 {
2301 const auto sig_s = impl::sigmoid(s[i]);
2302 g[i] += in[i] * (sig_s * (1.0f + s[i] * (1.0f - sig_s)));
2303 }
2304 }
2305 }
2306
2307 // ----------------------------------------------------------------------------------------
2308

Callers 1

backwardMethod · 0.50

Calls 4

sigmoidFunction · 0.70
is_same_objectFunction · 0.50
hostMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected