즐거운프로그래밍

[딥러닝] 6x6x2, 6x6x3 입력 이미지의 합성곱과 필터 늘리기

수수께끼 고양이 2023. 11. 1. 11:55
728x90
반응형

 

6x6x2 입력

import numpy as np

np.random.seed(1)

image=np.random.randint(5, size=(4,4,2))
print('image_0=\n', image[:,:,0])
print('image_1=\n', image[:,:,1])

filter=np.random.randint(5, size=(3,3,2))
print('filter_0=\n', filter[:,:,0])
print('filter_1=\n', filter[:,:,1])

image_pad=np.pad(image,((1,1),(1,1),(0,0)))
print('image_pad_0=\n', image_pad[:,:,0])
print('image_pad_1=\n', image_pad[:,:,1])

convolution=np.zeros((4,4))

for row in range(4):
    for col in range(4):
        window=image_pad[row:row+3, col:col+3]
        convolution[row,col]=np.sum(window*filter)
        
print('convolution=\n', convolution)

 

 

 

 

 


6x6x2 입력 필터 늘리기

import numpy as np

np.random.seed(1)

image=np.random.randint(5, size=(4,4,2))
print('image_0=\n', image[:,:,0])
print('image_1=\n', image[:,:,1])

filter=np.random.randint(5, size=(3,3,2,2))
print('filter_00=\n', filter[:,:,0,0])
print('filter_10=\n', filter[:,:,1,0])
print('filter_01=\n', filter[:,:,0,1])
print('filter_11=\n', filter[:,:,1,1])

image_pad=np.pad(image,((1,1),(1,1),(0,0)))
print('image_pad_0=\n', image_pad[:,:,0])
print('image_pad_1=\n', image_pad[:,:,1])

convolution=np.zeros((4,4,2))

for fn in range(2): # 필터 개수
    for row in range(4):
        for col in range(4):
            window=image_pad[row:row+3, col:col+3]
            convolution[row,col,fn]=np.sum(window*filter[:,:,:,fn])
        
print('convolution_0=\n', convolution[:,:,0])
print('convolution_1=\n', convolution[:,:,1])

 

 


6x6x3 입력

import numpy as np

np.random.seed(1)

image=np.random.randint(5, size=(4,4,3))
print('image_0=\n', image[:,:,0])
print('image_1=\n', image[:,:,1])
print('image_2=\n', image[:,:,2])

filter=np.random.randint(5, size=(3,3,3,2))
print('filter_00=\n', filter[:,:,0,0])
print('filter_01=\n', filter[:,:,1,0])
print('filter_02=\n', filter[:,:,2,0])
print('filter_10=\n', filter[:,:,0,1])
print('filter_11=\n', filter[:,:,1,1])
print('filter_12=\n', filter[:,:,2,1])

image_pad=np.pad(image,((1,1),(1,1),(0,0)))
print('image_pad_0=\n', image_pad[:,:,0])
print('image_pad_1=\n', image_pad[:,:,1])
print('image_pad_2=\n', image_pad[:,:,2])

convolution=np.zeros((4,4,2))

for fn in range(2): # 필터 개수
    for row in range(4):
        for col in range(4):
            window=image_pad[row:row+3, col:col+3]
            convolution[row,col,fn]=np.sum(window*filter[:,:,:,fn])
        
print('convolution_0=\n', convolution[:,:,0])
print('convolution_1=\n', convolution[:,:,1])

 

 

 

 

* 필터의 깊이와 개수
* 입력의 깊이(이미지) = 필터의 갯수(필터의 깊이) = 출력의 깊이

* 필터의 갯수가 늘어났을 때, 출력의 깊이가 늘어나는 상황

 

 

 

728x90
반응형