728x90
반응형
3x3 입력 : filter size
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(3,3))
print('image=\n', image)
filter=np.random.randint(5, size=(3,3))
print('filter=\n',filter)
image_x_filter=image*filter
print('image_x_filter=\n',image_x_filter)
convolution =np.sum(image_x_filter)
print('convolution=\n',convolution)
4x4 입력 : stride
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(4,4))
print('image=\n', image)
filter=np.random.randint(5, size=(3,3))
print('filter=\n', filter)
convolution=np.zeros((2,2))
for row in range(2):
for col in range(2):
window=image[row:row+3, col:col+3]
print('window(%d, %d)=\n' %(row, col), window)
print('window(%d, %d)*filter=\n'%(row, col), window*filter)
convolution[row, col]=np.sum(window*filter)
print('convolution=\n', convolution)
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(5,5))
print('image=\n', image)
filter=np.random.randint(5, size=(3,3))
print('filter=\n', filter)
convolution=np.zeros((3,3))
for row in range(3):
for col in range(3):
window=image[row:row+3, col:col+3]
print('window(%d, %d)=\n' %(row, col), window)
print('window(%d, %d)*filter=\n'%(row, col), window*filter)
convolution[row, col]=np.sum(window*filter)
print('convolution=\n', convolution)
6x6 입력 : padding # 그림 사이즈가 줄어들지 않았으면 좋겠을 때
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(4,4))
print('image=\n', image)
filter=np.random.randint(5, size=(3,3))
print('filter=\n', filter)
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad=\n',image_pad)
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)
4x4 합성 곱 : pooling
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(4,4))
print('image=\n', image)
filter=np.random.randint(5, size=(3,3))
print('filter=\n', filter)
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad=\n',image_pad)
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)
max_pooled=np.zeros((2,2))
for row in range(0,2):
for col in range(0,2):
window=convolution[2*row:2*row+2, 2*col:2*col+2]
max_pooled[row, col]=np.max(window)
print('max_pooled=\n', max_pooled)
6x6 입력 필터 늘리기
import numpy as np
np.random.seed(1)
image=np.random.randint(5, size=(4,4))
print('image=\n',image)
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)))
print('image_pad=\n', image_pad)
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])
max_pooled=np.zeros((2,2,2))
for fn in range(2):
for row in range(0,2):
for col in range(0,2):
window=convolution[2*row:2*row+2,2*col:2*col+2,fn]
max_pooled[row, col, fn]=np.max(window)
print('max_pooled_0=\n',max_pooled[:,:,0])
print('max_pooled_1=\n',max_pooled[:,:,1])
import numpy as np
np.random.seed(1)
W,H=400,400
F=40
image=np.random.randint(5,size=(W,H))
print(image)
filter=np.random.randint(5,size=(3,3,F))
print('filter_0=\n', filter[...,0])
print('filter_0=\n', filter[...,1])
image_pad=np.pad(image,((1,1),(1,1)))
print('image_pad=\n', image_pad)
convolution=np.zeros((W,H,F))
for fn in range(F):
for row in range(H):
for col in range(W):
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])
max_pooled=np.zeros((H//2,W//2,F))
for fn in range(F):
for row in range(H//2):
for col in range(W//2):
window=convolution[2*row:2*row+2,2*col:2*col+2,fn]
max_pooled[row,col,fn]=np.max(window)
print('max_pooled_0=\n',max_pooled[...,0])
print('max_pooled_1=\n',max_pooled[...,1])
728x90
반응형
'즐거운프로그래밍' 카테고리의 다른 글
[딥러닝] 필터 역할 살펴보기(부드러운 이미지 추출하기) (0) | 2023.10.31 |
---|---|
[딥러닝] 알고리즘 CNN신경망 입력 필터 늘리기 (0) | 2023.10.31 |
[딥러닝] 딥러닝 활용하기(임의 흑백, 컬러 이미지 데이터 셋 학습) (0) | 2023.10.30 |
[딥러닝] 딥러닝 활용하기(cifar100 데이터 셋 학습하기) (0) | 2023.10.30 |
[딥러닝] 딥러닝 활용하기(cifar10 데이터 셋 학습하기) (0) | 2023.10.30 |