1.x[0,0;,;]
x[n,c,h,w] n表示样本标号,一般是一个batch一个batch输入的 ,0表示样本标号为0
c 表示图像的channel 对于灰度图来讲有三个r g b
h 表示图像的高
w 表示图像的宽
2.池化
mean
forward:[1 3;2 2]->[2]
backward[2] ->[0.5 0.5; 0.5 0.5]
max
forward:[1 3;2 2]
backward[3]->[0 3;0 0]
w1 w2 w3
data ->卷积层->relu ->pooling->全连接->score
只有卷积层和全连接层有参数
#compute the foward pass 前向传播
a1,cache1 = conv_relu_pool_forward(X,W1,b1,conv_param,pool_param
a2,cache2=affine_relu_forward(a1,w2,b2)
scores,cache3 =affine_forward(a2,w3,b3)
#copute the backward pass
data_loss,dscores=softmax_loss(scores,y)
da2,dw3,db3=affine_backward(dscores,cache3)
da1,dw2,db2=affine_relu_backward(da2,cache2)
dx,dw1,db1=conv_relu_pool_backward(da1,cache1)
#add regularization
dw1 +=self.reg*W1
dw2 +=self.reg*W2
dw3 +=self.reg*W3
reg_loss = 0.5*self.reg*sum(np.sum(W*W) for W in [W1,W2,W3])
loss =data_loss +reg_loss
grads ={'W1':dw1,'b1':db1,'W2':dw2,'b2':db2,'W3':dw3,'b3':db3}
return loss,grads
stride表示步长,pad
假设3232卷积之后就变成2828
conv_forward_naive(x,w,b,conv_param);
首先确定步长,pad
确定x,w
填充步长
确定卷积后的骨架