본문 바로가기

padding

선생님, Padding은 뭔가요?(2) - 스트라이드 (Stride) 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 선생님, Padding은 뭔가요?(2) - 스트라이드 (Stride) 스트라이드는 사전적으로 ‘보폭’이라는 의미를 갖는다. 마찬가지로 입력데이터에 필터를 적용할때를 생각해보자. 아래의 예제는 앞에서 계속 다루었던 (4,4)사이즈의 입력 데이터에 (3,3) 필터를 적용한 예이다. 여기에 우리가 배운 세임 패딩을 적용한다면 다음과 같이 나타낼 수 있다. 패딩을 적용한 입력 데이터에 합성곱 연산을 하면 아래의 그림처럼 진행 될 것이다. 그림에서 필터가 적용되는 보폭을 보자. 지금까지는 보았던 연산들이 그러하듯 왼쪽 위부터 오른쪽 방향으로 한칸씩 전진하며 합성곱 연산이 적용된다. 즉 앞에서 본 예시는 모두 스트라이드가 1.. 더보기
선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 선생님, Padding은 뭔가요? 밸리드 패딩 / 풀 패딩 / 세임 패딩 패딩(padding)의 사용은 앞에서 언급했듯이 출력 크기를 보정하기 위해 사용하며 ‘충전재’라는 의미처럼 입력 데이터의 사방을 특정 값으로 채우는 것을 말한다. 일반적으로 특정 값은 그냥 0을 사용하기에 제로패딩(zero padding)이라고도 한다. 아래의 사진은 (4,4)인 입력데이터에 폭이 1 pixel인 패딩을 적용하여 (6,6) 크기가 된 그림이다. 밸리드 패딩 (valid padding) 우리가 지금까지 다루었던 즉 패딩을 추가 하지 않은 형태는 엄밀히 말하면 밸리드 패딩(valid padding)을 적용했다고 한다. 이렇게 밸리.. 더보기
곱셈과 덧셈만 알면 정말 쉬운 '합성곱' 【2】CNN_합성곱 신경망 / Convolutional Neural Networks의 이해 곱셈과 덧셈만 알면 정말 쉬운 '합성곱' 합성곱 연산은 CNN의 핵심원리라고 할 만큼 중요하다. 그런데, 합성곱은 곱셈과 덧셈만 이용하면 되는 매우 단순한 작업이다. 그림과 함께 보면 합성곱 연산을 쉽게 이해 할 수 있을 것이다. 아래의 그림을 보자. 먼저 합성곱 연산을 위해서는 재료가 되는 입력 데이터와 필터가 필요하다. 사이즈는 (높이, 너비)로 표현하며 필터는 주로 (3,3) 또는 (5,5) 와 같은 정방행렬을 사용한다. 미리 언급했듯이 CNN의 학습 대상은 필터의 값(weight)이므로 적절한 초기 값을 설정할 필요가 있다. 이때 우리가 1장에서 다루었던 초기화 방법들이 CNN의 필터 값을 초기화 할때에도 .. 더보기
[자연어처리] 패딩(Padding) : 다른 숫자로 패딩하는 방법 (파이썬) 이전 글들에서 pad_sequences() 함수를 사용하여 패딩을 구현하고, 길이 지정 등 다양하게 패딩하는 방법에 대해서 계속 살펴보았는데요, 이번 글에서는 0이 아닌 다른 값으로 패딩하는 방법에 대해서 살펴보겠습니다. 먼저, pad_sequences() 함수를 이용하여 길이 10의 제로패딩을 하는 코드를 작성해보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] #정수 인코딩 tokenizer= Tokenizer(.. 더보기
[자연어처리] 패딩(Padding) : 길이 지정 방법 - maxlen (파이썬) 이전 글들에서 패딩을 하는 기본적인 방법과, 제로 패딩을 할 때 0을 뒤로 채우는 방법 등에 대해서 살펴보았는데요, 이번에는 패딩을 할 때, 길이를 지정하는 방법에 대해서 살펴보도록 하겠습니다. 먼저, 기본적으로 패딩을 하는 코드를 작성하고, 그 결과를 보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] tokenizer= Tokenizer() tokenizer.fit_on_texts(sentences) encode.. 더보기
[자연어처리] 패딩(Padding) : 0을 뒤에 채우는 방법 (파이썬) 지난 글에서는 파이썬에서 패딩을 구현하는 기본적인 방법에 대해서 알아보았는데요, pad_sequences() 함수를 이용하여 패딩을 구현했습니다. 아래 코드처럼 pad_sequenes()를 이용하여 코드를 입력하면 기본적인 패딩이 되는데요, import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['tree', 'nice', 'green'], ['nice', 'sky', 'and', 'tree'], ['bird', 'tree']] tokenizer= Tokenizer() tokenizer.fit_on_texts(sentences) encoded = tokenizer... 더보기
[자연어처리] 파이썬 코드로 패딩(Padding) 구현하기 - pad_sequences 패딩(Padding)이란, 데이터에 특정한 값을 채워서 데이터의 크기를 일괄적으로 조정하는 것을 말하는데요, 이때 특정한 값이 0이라면 이를 제로 패딩이라고 합니다. 한편, 케라스에서 패딩을 하기 위한 함수 'pad_sequences()'를 제공하는데요, 정수 인코딩이 된 값을 입력하면 패딩된 값으로 반환해줍니다. 한번 코드를 보면서 살펴보도록 하겠습니다. 1. 정수 인코딩하기 정수 인코딩을 하는 방법은 이전 글에서 자세하게 살펴보았는데요, 이에 대해서는 이전 글을 참고하시고, 바로 코드를 작성해보겠습니다. import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer sentences = [['place', 'tree'], ['.. 더보기