8장 이미지 분류 – 합성곱 신경망(1)

8-1 컨볼루션 연산

– 컨볼루션 이해


– 회선 구현

1. NumPy 배열을 정의하고 배열을 선택한 다음 뒤집습니다.

import numpy as np
w = np.array((2, 1, 5, 3))
x = np.array((2, 8, 3, 7, 1, 2, 0, 4, 5))

w_r = np.flip(w)
print(w_r)


##출력: (3 5 1 2)

2. NumPy에서 내적을 사용하여 컨벌루션 수행

for i in range(6):
  print(np.dot(x(i:i+4), w_r))
  
 
##출력: 
63
48
49
28
21
20

3. SciPy로 컨볼루션 수행

from scipy.signal import convolve
convolve(x, w, mode="valid")


##출력: array((63, 48, 49, 28, 21, 20))

– 교차 상관

대부분의 딥 러닝 패키지는 교차 상관을 사용하여 컨벌루션 신경망을 생성합니다.

교차 상관은 컨볼루션과 같은 방식으로 작동하지만 “슬라이딩 배열을 뒤집지 않습니다”.


from scipy.signal import correlate
correlate(x, w, mode="valid")

##출력: array((48, 57, 24, 25, 16, 39))

– 컨벌루션 신경망에서 상호 상관을 사용하는 이유는 무엇입니까?


모든 모델은 훈련 전에 가중치 배열의 요소를 무작위로 초기화하므로 가중치의 “슬라이딩 배열”이 뒤집혀 있는지 여부는 중요하지 않습니다.

– 패딩 및 가랑이

패딩: 원래 배열의 양쪽 끝에 빈 요소 추가 -> 대부분의 Convolutional Neural Network에서 동일한 패딩을 사용합니다.

Stride: 슬라이딩 배열의 간격 조정

– 유효한 실내 장식품

원래 배열의 요소가 컨볼루션 연산에 참여하는 정도는 다양합니다.

mode 매개변수에 대한 ‘valid’ 지정

유효한 패딩이 있는 결과 배열은 항상 원래 배열보다 작습니다.


– 풀패딩

원래 배열의 모든 요소가 연산에 동등하게 참여하는 패딩 방법

제로 패딩은 원래 배열의 두 문자열에 가상 요소를 추가하는 데 필요합니다.


correlate(x, w, mode="full")


##출력: array(( 6, 34, 51, 48, 57, 24, 25, 16, 39, 29, 13, 10))

– 같은 실내 장식품

출력 배열의 길이를 원래 배열의 길이와 동일하게 만듭니다.

출력 배열의 길이가 원래 배열의 길이와 같도록 원래 배열에 0을 추가합니다.


correlate(x, w, mode="same")


##출력: array((34, 51, 48, 57, 24, 25, 16, 39, 29))

– 단계

슬라이딩 어셈블리의 간격

슬라이딩 간격 조정

컨벌루션 신경망을 만들 때 일반적으로 단계 크기를 1로 지정합니다.


※ 내용 Dies sind die Inhalte, die basierend auf den Inhalten der Einführung in Deep Learning> 배우고 조직하는 것.