Caffe中的反向传播代码理解

在神经网络中的反向传播中,求导函数的形式往往用目标值y来表示更合适些,这与数学中常见的用x来表示导函数的习惯有所不同,这样的形式可以在sigmoid函数的导函数表达式中看到。

sigmoid函数

实现:\src\caffe\layers\sigmoid_layer.cpp
反向传播实现:
const Dtype sigmoid_x = top_data[i];
bottom_diff[i] = top_diff[i] * sigmoid_x * (1. – sigmoid_x);

dyodx=dyodhdhdx=Δhy(1y)

而我们都知道sigmoid函数的导数实际是:


y=ex(1+ex)2=ex+11(1+ex)2=11+ex1(1+ex)2=yy2=y(1y)

因此,便有了上面实现的代码。

点赞