StackOverflow를 참조했다.
stride = [batch, width, height, depth] 로 설정한다.
00 01 02 03 04 ...
10 11 12 13 14 ...
20 21 22 23 24 ...
30 31 32 33 34 ...
...
위와 같은 이미지가 있다고 했을 때, strde = [1, 1, 1, 1] 이면 필터는 아래처럼 잡힌다.F(00 01 -> F(01 02 -> ...
10 11) 11 12)
-> F(10 11
20 21)
width 와 height 를 1로 잡는 바람에 필터에 들어가는 내용이 겹쳐지게 되었다.
이것을 방지하기 위해서 width와 heigth를 2로 설정하면 아래처럼 된다.
즉, strde = [1, 2, 2, 1] 이면 필터는 아래처럼 잡힌다.
F(00 01 -> F(02 03 -> ...
10 11) 12 13)
-> F(20 21
30 31)
batch를 1로 설정한 이유는 필터에 내용을 넣을 때 모든 이미지의 원소를 다 넣고싶기 때문이다. 그리고 depth를 1로 설정한 이유도 같다.
MNIST 무작정 따라하기 4에서 다음과 같은 코드가 있다.
import tensorflow as tf x = tf.placeholder("float", shape=[None, 784]) x_image = tf.reshape(x, [-1,28,28,1])reshape를 할 때 [-1, 28, 28, 1]은 [batch_size, width, height, channel] 을 의미한다.
batch_size를 -1로 두면 자동으로 batch_size를 조정하겠다는 뜻이다. 따라서 파이프라인을 변경해서 batch size를 변경해야하더라도 reshpae의 batch size 크기를 바꿔줄 필요가 없게된다.