Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 배우는 tf.keras.layers.Dense 기본 구현 방법

TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, 파이썬과 함께 사용해 알고리즘, 딥러닝 애플리케이션 등을 구현할 수 있습니다. 학술 연구부터 실제 서비스 운영 환경까지 폭넓게 활용됩니다.

'tensorflow' 패키지는 윈도우 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)는 TensorFlow에서 사용되는 핵심 데이터 구조입니다. 데이터 흐름 다이어그램의 노드를 잇는 엣지(edge) 역할을 하며, 이 다이어그램을 '데이터 흐름 그래프(Data Flow Graph)'라고 부릅니다. 텐서는 쉽게 말해 다차원 배열 또는 리스트라고 할 수 있습니다.

Keras란 무엇인가?

Keras는 파이썬으로 작성된 딥러닝 API입니다. 생산성 높은 인터페이스를 갖춘 고수준(High-level) API로, 머신러닝 문제를 손쉽게 해결할 수 있도록 돕습니다. TensorFlow 프레임워크 위에서 동작하며, 빠른 실험과 반복 작업에 최적화되어 있습니다. 또한 머신러닝 솔루션을 개발하고 캡슐화하는 데 필요한 핵심 추상화 계층과 빌딩 블록을 제공합니다.

Keras는 이미 TensorFlow 패키지에 포함되어 있으므로, 아래 두 줄의 코드만으로 바로 사용할 수 있습니다.

import tensorflow
from tensorflow import keras

함수형 API(Functional API)의 장점

Keras 함수형 API는 시퀀셜 API(Sequential API)로 만든 모델보다 훨씬 유연한 구조의 모델을 생성할 수 있습니다. 구체적으로 다음과 같은 특징이 있습니다.

  • 비선형(non-linear) 토폴로지를 가진 모델을 다룰 수 있습니다.
  • 여러 모델 간에 레이어를 공유할 수 있습니다.
  • 다중 입력(multiple inputs)과 다중 출력(multiple outputs)을 지원합니다.

일반적인 딥러닝 모델은 여러 레이어로 구성된 방향성 비순환 그래프(DAG, Directed Acyclic Graph) 형태이며, 함수형 API는 이 레이어 그래프를 직관적으로 구축하는 데 큰 도움이 됩니다.

실행 환경: Google Colaboratory

이 글의 코드는 Google Colaboratory(Google Colab)에서 실행했습니다. Google Colab은 브라우저에서 바로 파이썬 코드를 실행할 수 있는 환경으로, 별도의 설정 없이 무료로 GPU(그래픽 처리 장치)까지 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

예제 코드

class CustomDense(layers.Layer):
    def __init__(self, units=32):
        super(CustomDense, self).__init__()
        self.units = units
    def build(self, input_shape):
        self.w = self.add_weight(
            shape=(input_shape[-1], self.units),
            initializer="random_normal",
            trainable=True,
        )
        self.b = self.add_weight(
            shape=(self.units,), initializer="random_normal", trainable=True
        )
    def call(self, inputs):
        return tf.matmul(inputs, self.w) + self.b
inputs = keras.Input((4,))
outputs = CustomDense(10)(inputs)
print("Keras model is being generated")
model = keras.Model(inputs, outputs)

코드 출처 − https://www.tensorflow.org/guide/keras/functional

실행 결과

Keras model is being generated

코드 상세 설명

  • Keras에는 다양한 내장 레이어가 포함되어 있으며, 대표적으로 'Conv1D', 'Conv2D', 'Conv2DTranspose' 등이 있습니다.

  • 'call' 메서드는 해당 레이어가 입력 데이터에 대해 수행하는 실제 연산을 정의합니다.

  • 'build' 메서드는 레이어가 사용할 가중치(weight)를 생성하는 역할을 담당합니다.

  • 위 과정을 거쳐 최종적으로 Keras 모델이 성공적으로 생성됩니다.