NumPy의 Convolve 이해
단순 이동 평균을 계산할 때 numpy.convolve
작업을 수행하는 것처럼 보입니다.
질문 : 사용할 때 계산은 어떻게 이루어 np.convolve(values, weights, 'valid')
집니까?
문서가 언급 될 때 convolution product is only given for points where the signals overlap completely
두 신호는 무엇을 의미합니까?
설명에 예와 그림이 포함될 수 있다면 매우 유용합니다.
window = 10
weights = np.repeat(1.0, window)/window
smas = np.convolve(values, weights, 'valid')
컨볼 루션은 주로 신호 처리에 사용되는 수학적 연산자입니다. Numpy는 단순히이 신호 처리 명명법을 사용하여이를 정의하므로 "신호"참조가됩니다. numpy의 배열은 신호입니다. 두 신호의 컨볼 루션은 첫 번째 신호의 적분으로 정의되며, 반전 된 후 두 번째 신호를 스위핑 ( "컨 볼브 된")하고 겹치는 벡터의 각 위치에서 곱해집니다 (스칼라 곱으로). 첫 번째 신호는 특히 이미지 처리 또는 신경망 에서 2D 행렬 이고 반전 이 2D (전치 아님) 의 미러링 이되는 경우 커널 이라고합니다 . wikipedia의 애니메이션을 사용 하면 더 명확하게 이해할 수 있습니다 .
컨볼 루션에는 컨텍스트에 따라 여러 정의가 있습니다. 일부는 중첩이 시작될 때 컨볼 루션을 시작하고 일부는 중첩이 부분적 일 때 시작합니다. numpy의 "유효"모드의 경우 겹침은 항상 완료되도록 지정됩니다. 결과에 제공된 모든 값이 데이터 외삽없이 수행되므로 "유효"라고합니다.
예를 들어, 배열 X의 길이가 2이고 배열 Y의 길이가 4 인 경우 "유효"모드에서 X를 Y로 컨볼 루션하면 길이 3의 배열이 제공됩니다.
X = [4 3]
및 에 대한 첫 번째 단계 Y = [1 1 5 5]
:
[3 4] (X is reversed from [4 3] to [3 4], see note)
[1 1 5 5]
= 3 * 1 + 4 * 1 = 7
참고 : X가 반전되지 않은 경우 연산을 회선 대신 상호 상관 이라고합니다 .
두번째 단계:
[3 4]
[1 1 5 5]
= 3 * 1 + 4 * 5 = 23
세 번째 단계 :
[3 4]
[1 1 5 5]
= 3 * 5 + 4 * 5 = 35
모드 "유효"에 대한 컨볼 루션의 결과는 [7 23 35]입니다.
중복이 하나의 단일 데이터 포인트로 지정되면 ( "full"모드의 경우) 결과는 길이 5의 배열을 제공합니다. 첫 번째 단계는 다음과 같습니다.
[3 4]
[1 1 5 5]
= 3 * undefined (extrapolated as 0) + 4 * 1 = 4
등등. 더 많은 외삽 모드가 있습니다.
참고 URL : https://stackoverflow.com/questions/20036663/understanding-numpys-convolve
'development' 카테고리의 다른 글
Git Bash Shell이 심볼릭 링크를 생성하지 못함 (0) | 2020.12.04 |
---|---|
Android Studio에서 링크 된 소스 폴더를 추가하는 방법은 무엇입니까? (0) | 2020.12.04 |
'isblank'함수를 부정하는 방법 (0) | 2020.12.04 |
Google Colab에서 TensorBoard를 사용할 수 있나요? (0) | 2020.12.04 |
VIM의 다중 선택 (0) | 2020.12.04 |