TensorFlow (feat. Keras)

3단 분석법

Tensorflow

순서
분석
단어
내용
1
정의
Tensorflow
구글에서 개발한 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리, 머신러닝 및 딥러닝에도 사용된다
2
알아야하는 이유
Tensorflow
딥러닝 및 머신러닝 모델을 구축, 훈련, 배포할 때 많이 사용하는 오픈소스 라이브러리이기 때문에
3
동작방식
Tensorflow
1. 컴퓨팅 그래프 정의 2. 세션 실행 3. 자동 미분

Keras

순서
분석
단어
내용
1
정의
Keras
파이썬으로 작성된 오픈소스 신경망 라이브러리
2
알아야하는 이유
Keras
딥러닝 모델을 직관적이고 간편하게 설계, 구축, 훈련할 수 있는 고수준의 딥러닝 API를 제공하기 때문에
3
동작방식
Keras
1. 모델 정의 2. 모델 컴파일 3. 모델 훈련 4. 모델 평가 및 예측

정의

Tensorflow

Tensorflow
구글에서 개발한 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리, 머신러닝 및 딥러닝에도 사용된다
Tensorflow(이하 텐서플로)는 구글에서 개발한 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리 입니다.
텐서플로는 대규모 데이터 처리가 가능하기 때문에 머신 러닝, 딥 러닝에서 주로 많이 사용합니다.

Keras

Keras
파이썬으로 작성된 오픈소스 신경망 라이브러리
Keras(이하 케라스)는 파이썬으로 작성된 오픈소스 신경망 라이브러리 입니다.
케라스는 사용하기 쉬운 API를 제공해 신경망 모델을 빠르게 설계, 구축, 훈련할 수 있습니다.
또한, 모듈식 아키텍처를 채택하고 있어 새로운 레이어나 모듈을 쉽게 추가하고 수정할 수 있습니다.
2017년 이전까지는 텐서플로와 케라스를 단순히 같이 사용하는 관계였지만,
2017년부터 구글의 텐서플로팀이 텐서플로의 코어 라이브러리에 케라스를 지원하기 시작했습니다.

알아야하는 이유

Tensorflow

Tensorflow
딥러닝 및 머신러닝 모델을 구축, 훈련, 배포할 때 많이 사용하는 오픈소스 라이브러리이기 때문에
이유
설명
주요 라이브러리
텐서플로는 딥러닝 및 머신러닝 모델을 구축, 훈련, 배포할 때 많이 사용하는 오픈소스 라이브러리입니다. 다양한 플랫폼에서 사용할 수 있으며, 대규모 데이터 처리와 복잡한 연산을 빠르게 수행할 수 있습니다.
성능
텐서플로는 컴퓨팅 성능이 뛰어나고 대규모 데이터 처리 및 복잡한 연산을 빠르게 수행할 수 있습니다.
확장성
다양한 플랫폼과 언어를 지원하여 높은 확장성과 유연성을 제공합니다.
시각화 도구
텐서보드를 통해 모델의 학습 과정과 성능을 시각화하고 디버깅할 수 있습니다.
커뮤니티 지원
활발한 커뮤니티 지원과 다양한 튜토리얼, 예제 코드가 제공되어 학습과 문제 해결에 도움을 줍니다.

Keras

Keras
딥러닝 모델을 직관적이고 간편하게 설계, 구축, 훈련할 수 있는 고수준의 딥러닝 API를 제공하기 때문에
이유
설명
고수준 API
케라스는 직관적이고 간편한 API를 제공하여 딥러닝 모델을 쉽게 설계, 구축, 훈련할 수 있습니다.
백엔드 호환성
텐서플로, CNTK, Theano 등 다양한 백엔드 엔진과 호환되어 유연하게 사용할 수 있습니다.
빠른 프로토타이핑
빠르게 프로토타이핑하고 모델을 실험할 수 있어 연구와 개발에 매우 유용합니다.
사용자 친화적
사용하기 쉬운 인터페이스로 초보자도 쉽게 딥러닝 모델을 만들고 사용할 수 있습니다.

동작 방식

Tensorflow

Tensorflow
1. 컴퓨팅 그래프 정의 2. 세션 실행 3. 자동 미분
순서
동작
설명
1
컴퓨팅 그래프 정의
텐서플로우는 계산을 그래프로 표현하며, 노드는 연산을, 엣지는 데이터 흐름을 나타냅니다.
2
세션 실행
정의된 그래프를 세션에서 실행하여 실제 연산을 수행하고 결과를 계산합니다.
3
자동 미분
텐서플로우는 그래디언트를 자동으로 계산하여 모델의 매개변수를 최적화합니다.

Keras

Keras
1. 모델 정의 2. 모델 컴파일 3. 모델 훈련 4. 모델 평가 및 예측
순서
동작
설명
1
모델 정의
Sequential 또는 Functional API를 사용하여 층(layer)을 쌓아 모델을 정의합니다.
2
모델 컴파일
손실 함수, 옵티마이저, 평가 지표를 설정하여 모델을 컴파일합니다.
3
모델 훈련
fit() 메서드를 사용하여 데이터로 모델을 훈련시킵니다.
4
모델 평가 및 예측
evaluate()predict() 메서드를 사용하여 모델 성능을 평가하고 예측합니다.

사용 예시

텐서플로와 케라스를 사용하여 난수로 생성한 가상 데이터셋으로 간단한 신경망을 구축하고 훈련하는 예시입니다.
아래의 코드를 코랩에서 한 번 실행해보세요.
import tensorflow as tf from tensorflow.keras import layers, models import numpy as np # 가상 데이터셋 생성 np.random.seed(0) # 재현성을 위해 난수 시드 설정 train_data = np.random.rand(1000, 10) # 1000개의 샘플, 각 샘플은 10개의 특성을 가짐 train_labels = np.random.randint(2, size=(1000, 1)) # 1000개의 이진 레이블 test_data = np.random.rand(100, 10) # 100개의 테스트 샘플 test_labels = np.random.randint(2, size=(100, 1)) # 100개의 테스트 이진 레이블 # 모델 정의 model = models.Sequential([ layers.Dense(16, activation='relu', input_shape=(10,)), # 은닉층: 16개의 뉴런을 갖는 Dense 층, ReLU 활성화 함수 사용 layers.Dense(1, activation='sigmoid') # 출력층: 1개의 뉴런, 시그모이드 활성화 함수 사용 ]) # 모델 컴파일 model.compile(optimizer='adam', # 옵티마이저: Adam loss='binary_crossentropy', # 손실 함수: binary_crossentropy metrics=['accuracy']) # 평가 지표: 정확도 # 모델 훈련 model.fit(train_data, train_labels, epochs=10, batch_size=32) # 모델 평가 test_loss, test_acc = model.evaluate(test_data, test_labels) print(f"Test accuracy: {test_acc}") # 예측하기 predictions = model.predict(test_data) print(f"Prediction for the first test sample: {predictions[0]}")
Python
복사

코드 설명

가상 데이터셋 생성
train_datatest_data는 각각 1000개, 100개의 샘플을 가지며, 각 샘플은 10개의 랜덤 특성을 가집니다.
train_labelstest_labels는 각각 이진 레이블로 구성됩니다.
모델 정의
첫 번째 Dense 층은 16개의 뉴런을 가지며, ReLU 활성화 함수를 사용합니다.
두 번째 Dense 층은 1개의 뉴런을 가지며, 이진 분류를 위해 시그모이드 활성화 함수를 사용합니다.
모델 컴파일
옵티마이저로 Adam을 사용하고, 손실 함수로 binary_crossentropy를 사용합니다.
모델 평가 지표로 정확도를 사용합니다.
모델 훈련
fit 메서드를 사용하여 모델을 훈련합니다. 여기서 훈련 데이터와 레이블을 제공하고, 에포크 수를 10으로 설정합니다. 배치 크기는 32로 설정합니다.
모델 평가
evaluate 메서드를 사용하여 테스트 데이터에 대한 모델의 성능을 평가합니다.
예측하기
predict 메서드를 사용하여 테스트 데이터에 대한 예측을 수행하고, 첫 번째 테스트 샘플에 대한 예측 결과를 출력합니다.
아직은 각각의 단계가 어떤 것인지 잘 모르겠지만, 우리는 앞으로 위의 내용들을 하나하나 배워나갈 것입니다.
ⓒ 2024 startupcode. 모든 권리 보유. 무단 복제 금지.