본 포스팅에서는 Tensorflow 2.0 의 함수형 API 사용방법에 대해 알아보겠습니다.

 

그림1

함수형 API를 활용하여, 그림1과 같은 네트워크를 갖는 모델을 설계해보겠습니다.

from  tensorflow import keras

>>> inputs = keras.Input(shape=(3,))

argument는 데이터 차원이 3차원임을 나타내고 배치 크기는 (항상) 생략이 가능합니다

  데이터의 구체적인 shape알려주면 됩니다. 예를들어 데이터가 (32, 16, 3) 차원일 경우,

    Inputs = keras.Input(shape=(32, 16, 3)). 라고 써주면 됩니다.

Input 함수 반환은 input datadtypeshape에 관한 정보를 포함합니다.

    Tensor("input_1:0", shape=(None, 3), dtype=float32)

 

>>> x = keras.layers.Dense(4, activation=‘linear')(inputs)

  밀집된; 이라는 뜻으로 Network에서 밀집층을 구현할 때 쓰이는 함수입니다.

└  인자로 상위 층의 출력을 받습니다.

Dense함수는 다음 식을 구현한 것입니다.

     Y = activation(  matmul( X, W)  +  b  )    *W: kernel, b : bias

W는 4x3 크기의 matrix, b 는 4크기의 vector가 됩니다 

 

>>> outputs = keras.layers.Dense(2, activation=linear')(x)

 

>>> model = keras.Model( inputs = Inputs, outputs = outputs, name = ‘Linear Regression')

└ input, output을 인자로하는 Model을 정의합니다.

 

>>> model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])

Optimizerloss function, Metric 연결하여 Computation graph구성합니다.

Metrics: 평가 기준,  metrics 인자로 여러 개의 평가 기준을 지정 가능합니다. (optioonal)

모델의 학습에는 영향을 미치지 않지만, 학습 과정 중에 제대로 학습되고 있는 살펴보는 기능입니다

 

>>> model.fit(training_data, target_data, epochs = 1000, verbose =1)

training data(Feature), target data(label)  model의 가중치를 업데이트하며 이것을 "학습" 이라고 합니다.

└ 이때, training data: (3x1, n) , target_data: (2x1, n) 구조를 가져야 합니다.

epoch: 학습 데이터 전체 1 cycle 학습하는 것을 1회 epoch 이라고 합니다.

 

>>> model.summary()

└ 설계한 모델의 구조를 확인해보는 함수입니다.

 

>>> model.predict(test_data)

주어진 데이터로 모델의 마지막 층까지 계산한 결과값을 numpy  array 자료형으로 반환합니다.

└ test data: (3x1, m) traing data와 크기가 동일해야 하며, 개수(m)는 무관합니다.

 

여기까지 함수형 API를 활용하여 간단한 Multi layer perceptron 구조의 머신러닝 모델을 설계하는 방법에 대해 알아보았습니다.

다음 포스팅에서는 작성한 코드를 실제 custom data에 적용하여 수행해보도록 하겠습니다.

감사합니다:)

+ Recent posts