bc
- 我的理解就是axis字段用于指定reshape后哪一个维度是通过推导得到的,剩下的维度使用dim字段依次指定。
axis=1,表示指定输出的第1(下标)个维度是通过推断得到的,输出是2 * 8,那么推断得到第一个维度应该是2。
axis=-3,表示[-3,-2,-1]中的-3,也就是正向数的第0个在读是通过推断得到的,推断的数字是2。
- num_axes字段用于和axis字段组合起来说明除过[axis,axis+num_axes]下标的输出维度,其他维度是通过推导得到的,即dim指定的是输出下标[axis,axis+num]的维度,作者把dim进行指定这一操作叫做reshape input ,如果num_axes>=0 时用于指定reshape的范围,而num_axes=-1时候指定从axis开始后的全部axes进行
因为axis字段默认值是0,那么num_axes=1表示,[0,1]是指定的,输出的下标为二的维度是由推断得出的,为8。
num_axes=0,表示[1,2]应该由推断给出,而且推断的第一规则是直接复制,那么他就直接把2 * 8给复制过来。
下标[1]是指定的,[0,2]是由推断给出的是2 和 8。
- 表示[1,2,3]维度指定,其他维度为推断得到,指定又是dim=-1表示推断,那么意思就是[1,2,3]对应bottom blob的[0,1,2],剩下一个维度再由推导的到那么就是bottom blob的0个维度,所以这一层的功能相当于将维度做一个transpose,输出维度相对于输入维度的次序关系[3,0,1,2]
但是实际上这一层是将 [13,1,50,256] 变成了[13,50,256]
错误!!