본문 바로가기

AI

[Tensorflow 자격증 공부] Fully Connected Layer (Dense Layer)

1. Dense Layer (Fully Connected Layer)

: 완전히 연결된 레이어

각각의 노드들이 완전히 연결되어있는 레이어 = Dense Layer = Fully Connected Layer = FC

 

ㅇ 그림에서 보이는 하나의 동그라미는 = 노드 = 뉴런 이라고 한다.

ㅇ 그림에서 각각의 layer 마다 노드의 개수가 다르다. hidden layer1의 Dense는 4 

ㅇ input layer로 데이터가 들어와서 output layer로 데이터가 나간다.

ㅇ input layer에서는 input_shape를 명시해 주어야한다.

ㅇ 분류문제의 경우) output layer에서는 분류 class의 개수와 output layer의 노드의 개수가 일치해야한다.

    ex) 빨강/노랑/파랑 분류 문제시 output layer의 노드수는 3개

 

 

2. 위 그림의 모델을 코드화 해본다면 다음과 같다

import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=float)

model = Sequential([
    Dense(3, input_shape=[1]),
    Dense(4),
    Dense(4),
    Dense(1),
])

 

3. 컴파일하기 (optimizer와 loss 반드시 지정)

optimizer : 알고리즘, 어떤 알고리즘을 사용하여서 오차를 줄여나갈 것인가?

               ex) sgd : Stochastic Gradient Descent

loss : 오차값

               ex) mse : mean squered error

model.compile(optimizer='sgd', loss='mse')

 

4. 학습하기

순서대로 input 데이터 / output 데이터 / 학습시킬 횟수 / 진행상황 안보여줌

model.fit(xs, ys, epochs=1200, verbose=0)

 

5. 예측하기

# output
# 16.000046
model.predict([10.0])

결과적으로 y=x+6 일차함수를 예측하는 모델이므로 10을 넣었을때 y값이 16으로 잘 나오는 것을 확인할 수 있다.