Akashic Records

15.2 텐서플로와 케라스 본문

Python for Beginners

15.2 텐서플로와 케라스

Andrew's Akashic Records 2023. 5. 2. 13:04
728x90

TensorFlow와 Keras는 파이썬을 사용한 딥러닝에 널리 사용되는 프레임워크입니다. 

TensorFlow는 Google에서 개발한 오픈소스 딥러닝 프레임워크로, 텐서 연산과 그래프 기반 계산을 통해 효율적으로 딥러닝 모델을 구현할 수 있습니다. TensorFlow는 CPU와 GPU를 모두 지원하며, 분산 컴퓨팅 환경에서도 사용할 수 있습니다. TensorFlow는 유연성과 성능을 모두 갖춘 딥러닝 프레임워크로 알려져 있습니다.

Keras는 TensorFlow를 기반으로 하는 고수준 딥러닝 API로, 간결하고 쉬운 문법으로 신속하게 딥러닝 모델을 구현할 수 있습니다. Keras는 다양한 딥러닝 모델을 쉽게 구성할 수 있는 모듈화된 구조를 제공하며, 사용자 친화적인 인터페이스를 제공합니다. TensorFlow 2.x 버전부터 Keras는 TensorFlow의 공식 고수준 API로 포함되어 있습니다.

예제: TensorFlow와 Keras를 사용한 기본적인 이미지 분류

이 예제에서는 TensorFlow와 Keras를 사용하여 Fashion MNIST 데이터셋에 대한 이미지 분류를 수행하는 간단한 딥러닝 모델을 구성하고 학습시켜보겠습니다.

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras.utils import to_categorical

# 데이터 불러오기 및 전처리
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 모델 구성
model = models.Sequential([
    layers.Flatten(input_shape=(28, 28)),
    layers.Dense(128, activation='relu'),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 모델 컴파일
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 모델 학습
model.fit(train_images, train_labels, epochs=10, batch_size=32)

# 모델 평가
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)

위 예제에서는 Keras를 사용하여 간단한 인공신경망 모델을 구성하고, Fashion MNIST 데이터셋을 사용하여 모델을 학습시키고 평가하였습니다. 이 모델은 입력 이미지를 완전연결층(Dense)을 사용하여 특징을 추출하고, 마지막 층에서 소프트맥스 활성 함수를 사용하여 각 클래스에 대한 확률을 출력합니다.

이제 더 복잡한 예제로, Keras를 사용하여 컨볼루션 신경망(CNN) 모델을 구성하고 학습시켜 보겠습니다.

예제: Keras를 사용한 컨볼루션 신경망(CNN)

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras.utils import to_categorical

# 데이터 불러오기 및 전처리
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
train_images = train_images.reshape(-1, 28, 28, 1) / 255.0
test_images = test_images.reshape(-1, 28, 28, 1) / 255.0
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 모델 구성
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 모델 컴파일
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 모델 학습
model.fit(train_images, train_labels, epochs=10, batch_size=32)

# 모델 평가
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)

이 예제에서는 컨볼루션 층(Conv2D)과 풀링 층(MaxPooling2D)을 사용하여 이미지의 지역적 특징을 추출하는 CNN 모델을 구성하였습니다. 이 모델은 기본적인 인공신경망 모델보다 더 정확한 이미지 분류 성능을 보일 것입니다.

TensorFlow와 Keras를 사용하여 다양한 딥러닝 모델을 구성하고 학습시킬 수 있으며, 모델을 개선하고 최적화하는 데 필요한 다양한 기능들을 제공합니다. TensorFlow의 분산 처리 기능을 사용하면 대규모 데이터셋에 대해서도 효율적으로 학습을 수행할 수 있습니다. 또한, TensorFlow Lite를 사용하여 모바일 및 임베디드 기기에서도 딥러닝 모델을 실행할 수 있습니다. 이러한 기능들을 활용하여 다양한 딥러닝 애플리케이션을 구현할 수 있습니다.

728x90

'Python for Beginners' 카테고리의 다른 글

15.4 자연어 처리(NLP, RNN, LSTM, Transformer)  (0) 2023.05.02
15.3 컴퓨터 비전(CNN)  (0) 2023.05.02
15.1 딥러닝 소개  (0) 2023.04.27
14.5 강화학습  (0) 2023.04.25
14.4 비지도학습  (0) 2023.04.25
Comments