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) 가중치가 콘솔에 출력됩니다.