[텐서플로우] 모델 summary param 의미
- 인공지능
- 2022. 3. 20. 17:36
소개
- 안녕하세요. 오늘은 텐서플로우에서 기본으로 제공해 주는 함수인 summary 함수에 대해서 알려 드리려고 합니다.
- summary 함수는 모델 구성에 대해서 확인할 수 있게 기본으로 제공해 주는 함수입니다.
예제 코드
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
# 학습데이터 준비
x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([1,2,3,4,5,6,7,8,9,10])
# Keras의 Sequential모델을 선언
model = keras.Sequential([
# 첫 번째 Layer: 데이터를 신경망에 집어넣기
keras.layers.Dense(32, activation='relu', input_shape = (1, )),
# 두번째 층
keras.layers.Dense(32, activation='relu'),
# 세번째 출력층: 예측 값 출력하기
keras.layers.Dense(1)
])
model.summary()
실행 결과
- 소스를 실행해서 summary 확인해 보니까 모델의 내용이 표로 정리되어 출력됩니다.
- 첫 번째 층에서 32개의 node가 생성됨을 알 수 있습니다.
- 두 번째 dense 층에서는 32개의 node, 세 번째 dense 층에서는 1개의 node가 생성 됨을 알 수 있습니다.
- 하지만, 여기서 param이라는 컬럼이 보이고, 64, 1056, 33 이라는 숫자가 보입니다.
- 해당 숫자가 의미하는것이 무엇인지에 대해서 알아 보겠습니다.
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 32) 64
dense_1 (Dense) (None, 32) 1056
dense_2 (Dense) (None, 1) 33
=================================================================
Total params: 1,153
Trainable params: 1,153
Non-trainable params: 0
param 이란?
- param은 parameter 의 약자입니다.
- 그런데 입력이 1개이고, 출력이 32개라면 1*32=32 이므로 파마미터가 32가 아닌가? 생각할 수 있습니다.
- 하지만, 첫 번째 레이어의 파라미터는 32가 아닌 64입니다.
- 먼저 이 부분을 이해하려면 1차 함수 식을 다시 보겠습니다.
y = ax + b
- 딥러닝에서는 위 식을 약간 다르게 표현합니다.
y = wx + b
h(x) = wx + b
- 지금까지 모델링을 할 때 노드의 개수에 영향을 준 것은 x와 y뿐이었습니다.
- 위 식을 보게 되면 b(bias, 절편) 이 있습니다.
- bias 값은 현재까지의 소스에서는 큰 영향력을 끼치지 않고 있으나, 머신러닝 딥러닝 훈련을 하면서 이 값을 잊지 않고 있었던 겁ㄴ디ㅏ.
- 머신은 딥러닝을 할 때 바이어스도 1개의 노드로 계산합니다.
- 즉 bias 값을 포함하여 param 계산하는 식은 다음과 같습니다.
1st hidden layer params = (input(1) + bias(1)) * output(32)
= (1 + 1) * 32 = 64
2st hidden layer params = (input(32) + bias(1)) * output(32)
= (32 + 1) * 32 = 1056
output hidden layer params = (input(32) + bias(1)) * output(1)
= (32 + 1) * 1 = 33
- 위와 같이 param 값들이 계산 되게 됩니다.
728x90
'인공지능' 카테고리의 다른 글
[TensorFlow] Tensorflow Serving 모델 업데이트 방법 (0) | 2022.03.22 |
---|---|
[Tensorflow] Tensorflow Serving models.config 설정 방법 (0) | 2022.03.21 |
[인공지능] 텐서플로우 - 1에서 10까지 예측 모델 구하기(선형회귀) (0) | 2022.03.20 |
[인공지능] gRPC 메타데이터 input, ouput 정보 가져오기 (0) | 2022.03.16 |
[인공지능] TensorFlow Serving - Docker Container 실행 하기, gRPC (0) | 2022.03.15 |
이 글을 공유하기