목차
numpy에는 0의 값을 가진 배열을 만들어 주는 zeros란 함수가 있습니다. 메모리에 값들이 존재하는 배열 변수의 값을 초기화해 주는 것이 주요 목적이지만, 딥러닝 학습 시 모델의 가중치를 초기화할 때 사용이 됩니다. 이번 포스팅에서는 zeros의 사용에 따른 의미를 정리하고 어떻게 사용하는지 살펴보겠습니다.
1. numpy.zeros란?
기본사용 시 의미
numpy.zeros 함수는 주어진 형태(shape)와 데이터 타입(dtype)을 가진 0으로 채워진 배열을 생성하는 데 사용됩니다. 배열의 크기와 차원을 지정하여 초기화된 배열을 생성할 수 있습니다. 이 함수는 NumPy 패키지의 일부로 제공되며, 다양한 수치 연산 및 데이터 처리 작업에 유용하게 사용됩니다.
딥러닝에서 사용 시 의미
numpy.zeros 함수는 딥러닝에서 초기화(initialization) 단계에서 많이 사용됩니다. 딥러닝 모델의 가중치(weight)와 편향(bias)을 초기화하는 데에 주로 활용됩니다. 초기화는 모델의 학습을 시작하기 전에 가중치와 편향을 적절한 초기값으로 설정하는 과정입니다.
딥러닝 모델은 일반적으로 가중치와 편향으로 구성된 여러 개의 레이어로 이루어져 있습니다. 이 가중치와 편향을 적절하게 초기화하는 것은 모델의 성능과 학습 속도에 큰 영향을 미칠 수 있습니다. 초기화를 잘못하면 모델이 제대로 수렴하지 않거나 학습이 불안정해질 수 있습니다.
numpy.zeros 함수를 사용하여 가중치와 편향을 초기화할 수 있습니다. 예를 들어, 가중치 행렬을 생성할 때 numpy.zeros 함수를 사용하여 0으로 채워진 행렬을 만들고, 편향 벡터를 생성할 때도 동일하게 0으로 채워진 벡터를 만들 수 있습니다. 이후에는 이러한 초기화된 값들을 다른 초기화 기법을 사용하여 더 적절한 값으로 업데이트하거나 학습 과정에서 최적화(optimizer) 알고리즘이 가중치와 편향을 조정하게 됩니다.
import numpy as np
# 가중치 행렬 초기화 예제
num_features = 10
num_hidden_units = 20
# 가중치 행렬 초기화
weights = np.zeros((num_features, num_hidden_units))
print(weights.shape)
# 출력: (10, 20)
2. numpy.zeros 사용법
numpy.zeros 함수의 시그니처
numpy.zeros(shape, dtype=float, order='C')
numpy.zeros 함수 인자
shape:
생성할 배열의 형태(shape)를 나타내는 튜플(tuple) 혹은 정수(integer). 배열의 차원과 크기를 지정합니다. 예를 들어, (2, 3)은 2행 3열의 2차원 배열을 생성합니다. shape 인자는 필수적으로 지정되어야 합니다.
dtype (선택적):
생성할 배열의 데이터 타입을 지정합니다. 기본값은 float입니다. 주로 float, int, bool 등의 데이터 타입이 사용됩니다. 예를 들어, dtype=int로 지정하면 정수 타입의 배열이 생성됩니다.
order (선택적):
배열의 요소를 저장하는 순서를 지정합니다. 기본값은 'C'입니다. 'C'는 C 스타일의 로우 메이저(로우 우선) 순서를, 'F'는 포트란 스타일의 컬럼 메이저(컬럼 우선) 순서를 나타냅니다.
shape 인자는 필수적으로 지정되어야 하며, dtype와 order 인자는 선택적으로 지정할 수 있습니다. 예를 들어, numpy.zeros((2, 3), dtype=int)는 2행 3열의 정수 타입 배열을 생성하며, numpy.zeros(4)는 크기가 4인 1차원 배열을 생성합니다.
3. numpy.zeros 사용 예
import numpy as np
# shape 인자 변경
a = np.zeros((2, 3))
print(a)
# 출력:
# [[0. 0. 0.]
# [0. 0. 0.]]
b = np.zeros((3, 2))
print(b)
# 출력:
# [[0. 0.]
# [0. 0.]
# [0. 0.]]
# dtype 인자 변경
c = np.zeros((2, 2), dtype=int)
print(c)
# 출력:
# [[0 0]
# [0 0]]
d = np.zeros((2, 2), dtype=bool)
print(d)
# 출력:
# [[False False]
# [False False]]
위의 코드에서 numpy.zeros 함수의 인자를 변경하면서 배열의 형태, 데이터 타입, 저장 순서가 어떻게 변하는지 확인할 수 있습니다. shape 인자를 변경하면 배열의 크기와 차원이 달라지고, dtype 인자를 변경하면 배열의 데이터 타입이 변합니다.
4. 마치며
주어진 형태(shape)와 데이터 타입(dtype)을 가진 0으로 채워진 배열을 생성하는 데 사용하는 numpy.zeros 함수에 대해 정리해 보았습니다. 해당 함수는 일반적인 코드에서 보다는 딥러닝 모델을 의미하는 가중치를 계산한 때 초기화의 목적으로 많이 사용되고 있습니다.