1. 程式人生 > >CNN卷積後輸出size的計算

CNN卷積後輸出size的計算

來個詳細版的如下:

來個簡版的如下:


padding =“SAME”的情況:

這裡插一句幫助理解:自動補全的話,考慮步長為1,每一卷積從第一個維度開始一步一步移動,直到最後一個維度,那麼輸出肯定是和原來的維度一樣,如果步長不是1比如為2 就要向上取整。比如7*7的影象採用3*3大小的卷積核進行卷積操作,padding = “SAME”的情況下就是[7/3] = 4,最後輸出為4*4大小的feature map

沒圖說個基:

① padding = "value", stride = 4, (227 - 11 + 2*0)/ 4 + 1 = 55

② padding = "value", stride = 2, (55 - 3 + 2*0

)/  2 + 1 = 27

③ padding = "same", stride = 1, 27 / 1 = 27

④ padding = "value",stride = 2, (27 - 3 + 2*0) / 2 + 1 = 13

來個例子:

input = tf.Variable(tf.random_normal([64,5,5,3]))
filter = tf.Variable(tf.random_normal([3,3,3,16]))

op_1 = tf.nn.conv2d(input,filter,strides = [1,1,1,1],padding = "SAME")
op_2 = tf.nn.conv2d
(input,filter,strides = [1,2,2,1],padding = "SAME") init = tf.global_variables_initializer() sess = tf.InteractiveSession() sess.run(init) print(np.shape(sess.run(op_1))) print(np.shape(sess.run(op_2)))

output:

(64, 5, 5, 16)

(64, 3, 3, 16)