TensorFlow와 Keras: 딥러닝을 위한 핵심 도구
TensorFlow와 Keras는 딥러닝 개발을 위한 강력한 오픈소스 라이브러리입니다. TensorFlow는 복잡한 수치 연산을 효율적으로 수행하는 데 적합하며, Keras는 고수준 API로 사용자가 간단하게 모델을 설계하고 학습할 수 있도록 돕습니다. 이 글에서는 TensorFlow와 Keras의 주요 특징과 사용법을 살펴보겠습니다.
TensorFlow와 Keras 시작하기
TensorFlow와 Keras는 Python 기반이며, 설치 후 간단한 코드를 통해 쉽게 활용할 수 있습니다.
설치 및 버전 확인
pip install tensorflow
import tensorflow as tf
from tensorflow import keras
print("TensorFlow 버전:", tf.__version__)
MNIST 데이터셋으로 딥러닝 모델 구축
아래는 MNIST 데이터셋을 사용하여 간단한 딥러닝 모델을 구축하고 학습시키는 코드입니다.
import numpy as np
from tensorflow import keras
import tensorflow as tf
# MNIST 데이터셋 로드
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# 모델 정의
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
# 모델 컴파일
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 모델 학습
model.fit(x_train, y_train, epochs=5)
# 모델 평가
model.evaluate(x_test, y_test)
데이터 시각화
학습 데이터를 시각화하여 모델이 처리하는 데이터를 직관적으로 이해할 수 있습니다.
import matplotlib.pyplot as plt
plt.imshow(x_train[0], cmap='gray')
plt.title(f"Label: {y_train[0]}")
plt.show()
텐서(Tensor)와 텐서플로 연산
TensorFlow의 핵심은 텐서입니다. 텐서는 다차원 배열로, 모델 학습과 데이터 처리를 위한 기본적인 데이터 구조입니다.
텐서 생성
import tensorflow as tf
# 상수 텐서
tensor_constant = tf.constant([[1, 2], [3, 4]])
print("상수 텐서:", tensor_constant)
# 변수 텐서
tensor_variable = tf.Variable([[1, 2], [3, 4]])
print("변수 텐서:", tensor_variable)
# 랜덤 텐서
tensor_random = tf.random.normal([2, 2], mean=0, stddev=1.0)
print("랜덤 텐서:", tensor_random)
텐서 연산
TensorFlow는 다양한 수학 연산을 지원합니다.
# 행렬 곱
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[5, 6], [7, 8]])
result = tf.matmul(a, b)
print("행렬 곱 결과:", result)
# 텐서 브로드캐스팅
c = tf.constant([1, 2, 3])
d = tf.constant([[1], [2], [3]])
broadcasted_result = c + d
print("브로드캐스팅 결과:", broadcasted_result)
Keras를 활용한 심화 작업
사용자 이미지로 테스트
사용자 이미지를 학습된 모델에 입력하여 모델 성능을 테스트할 수 있습니다. 예를 들어, 손으로 작성한 숫자를 이미지로 저장하고 이를 입력 데이터로 사용합니다.
from PIL import Image
import numpy as np
# 이미지 불러오기
image = Image.open("handwritten_digit.png").convert("L")
image = image.resize((28, 28))
image = np.array(image) / 255.0
# 차원 추가 및 예측
image = np.expand_dims(image, axis=0)
prediction = model.predict(image)
print("예측된 클래스:", np.argmax(prediction))
TensorFlow와 Keras의 장점
- 직관적인 API: 초보자부터 전문가까지 쉽게 사용할 수 있도록 설계되었습니다.
- 다양한 플랫폼 지원: CPU, GPU, TPU 등 다양한 하드웨어에서 실행 가능합니다.
- 확장성: 복잡한 모델부터 간단한 실험까지 모두 처리할 수 있는 유연한 구조를 제공합니다.
댓글 없음:
댓글 쓰기