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

Keras로 입력 형태가 미리 정의된 모델을 생성하는 방법

TensorFlow는 Google에서 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, Python과 함께 사용하여 알고리즘, 딥러닝 애플리케이션 등을 손쉽게 구현할 수 있습니다. 연구 목적과 실제 운영(프로덕션) 환경 모두에서 널리 활용되고 있습니다.

Keras는 ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System, 개방형 신경 전자 지능형 로봇 운영체제) 프로젝트의 연구 과정에서 개발되었습니다. Python으로 작성된 딥러닝 API로, 머신러닝 문제 해결을 돕는 직관적이고 생산성 높은 인터페이스를 제공하는 고수준(high-level) API입니다.

Keras는 TensorFlow 프레임워크 위에서 동작하며, 빠르게 실험할 수 있도록 설계되었습니다. 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다.

또한 Keras는 뛰어난 확장성과 크로스 플랫폼 호환성을 갖추고 있어 TPU나 GPU 클러스터에서도 실행할 수 있습니다. 나아가 학습된 Keras 모델은 웹 브라우저나 모바일 기기에서 동작하도록 내보낼 수도 있습니다.

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

import tensorflow
from tensorflow import keras

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

예제 코드

print("Dense 레이어를 생성합니다")
layer = layers.Dense(3)
print("레이어에 연결된 가중치 확인")
print(layer.weights)

print("생성된 레이어를 테스트 데이터에 적용")
x = tf.ones((2, 3))
y = layer(x)
print("이제 가중치는 다음과 같습니다 : ")
print(layer.weights)

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

실행 결과

Dense 레이어를 생성합니다
레이어에 연결된 가중치 확인
[]
생성된 레이어를 테스트 데이터에 적용
이제 가중치는 다음과 같습니다 :
[<tf.Variable 'dense_11/kernel:0' shape=(3, 3) dtype=float32, numpy=
array([[-0.9901273 , -0.70897937, -0.44804883],
   [ 0.6849613 , 0.5198808 , 0.48534775],
   [-0.07876515, -0.73648643, 0.44018626]], dtype=float32)>, <tf.Variable 'dense_11/bias:0'
shape=(3,) dtype=float32, numpy=array([0., 0., 0.], dtype=float32)>]

코드 설명

  • Keras 모델의 모든 레이어는 최적의 가중치를 생성하기 위해 입력 형태(input shape)를 알아야 합니다.

  • 처음 레이어를 생성했을 때는 아직 어떤 가중치도 연결되어 있지 않습니다.

  • 따라서 레이어가 입력 데이터에 대해 처음 호출되는 시점에 비로소 가중치가 생성됩니다.

  • 이는 가중치가 입력 형태에 의존하기 때문입니다.

  • 레이어들은 순차적(Sequential)으로 생성됩니다.

  • 생성된 레이어는 테스트 데이터(tf.ones로 만든 (2, 3) 크기의 텐서)에 호출됩니다.

  • 입력이 전달된 후, 새롭게 생성된 커널(kernel)과 편향(bias) 가중치가 콘솔에 출력됩니다.