20241229

TensorFlow와 Keras 소개 및 활용

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 등 다양한 하드웨어에서 실행 가능합니다.
  • 확장성: 복잡한 모델부터 간단한 실험까지 모두 처리할 수 있는 유연한 구조를 제공합니다.

댓글 없음: