自己写层注意的知识点

来源:互联网 发布:eclipse是什么软件 编辑:程序博客网 时间:2024/04/29 13:49

1 reshape函数

reshape中里面必须把top的shape给定下来,比如说,这是一个loss layer,那么这个层的输出就是一个loss值,所以这个top的shape就是1*1,所以就这样写:

top[0].reshape(1,1)

forward函数

forward函数中最后的结果要放入top[i].data[...]中,其中i就是第几个top,因为有些层会有多个输出的。在loss layer中就只有一个输出就是loss值,所以只要给top[0].data[...]赋值就行了:

top[0].data[...] = some_value_you_get

backward函数

backward函数中,是对输入这一层的数据求梯度,而不是输出这一层的数据。即是对bottom求梯度,不是对top求梯度,所以这样写:

bottom[0].diff[...] = some_gradients_you_get

4 一些知识点

setup和reshape是在caffe构造网络结构的时候调用的,这个时候bottom[I].data的shape显示应该是1 * size的,因为这个时候并不知道batch_size是多少。

forward和backward是在train阶段调用的,这个时候bottom[I].data的shape显示的就是batch_size * size的了。


阅读全文
0 0