본문 바로가기
AI/Deep Learning

[Python] 딥러닝 tensorflow 라이브러리 자주 쓰는 클래스, 매서드

by 코끼리똥11 2024. 4. 18.

텐서플로우

import tensorflow as tf

텐서플로우(TensorFlow)는 구글에서 개발한 오픈소스 기계 학습 프레임워크이다. 딥 러닝 모델을 구축하고 학습시키는 데 사용되고 데이터 플로우 그래프를 사용하여 수치 연산을 수행한다. 이는 복잡한 수학적 연산을 효율적으로 처리하고 다양한 하드웨어 환경에서 실행할 수 있도록 해준다.

텐서플로우의 주요 특징과 장점은 다음과 같습니다:

  1. 유연성과 확장성: 텐서플로우는 다양한 작업과 모델을 지원하는 유연한 프레임워크이다. 이미지 분류, 자연어 처리, 음성 인식 등 다양한 분야에서 사용될 수 있다.
  2. 다양한 플랫폼 지원: 텐서플로우는 CPU, GPU, TPU(Tensor Processing Unit)와 같은 다양한 플랫폼에서 실행될 수 있다.
  3. 자동 미분: 텐서플로우는 자동 미분을 지원하여 복잡한 모델을 효과적으로 최적화할 수 있다.
  4. 풍부한 생태계: 텐서플로우는 다양한 도구, 라이브러리 및 모델 아키텍처를 포함한 풍부한 생태계를 갖고 있다. 이는 개발자가 더 빠르게 모델을 구축하고 실험할 수 있도록 돕는다.

 

 

tensorflow.keras.models

tensorflow.keras.models 모듈은 텐서플로우와 통합된 케라스(Keras) API를 사용하여 딥 러닝 모델을 구축하고 관리하는 데 사용되는 기능을 제공한다. 이 모듈을 사용하면 다양한 유형의 딥 러닝 모델을 만들고 훈련시킬 수 있다. 

 

Sequential

from tensorflow.keras.models import Sequential

Sequential 모델을 사용하면 딥 러닝 모델을 쉽게 구성할 수 있습니다. 순차적으로 층을 추가하므로, 코드의 가독성이 높아지고 모델의 구조를 직관적으로 파악할 수 있습니다. 이 모델은 주로 간단한 이미지 분류, 회귀 및 시퀀스 처리 작업에 사용됩니다.

Sequential 모델을 사용하여 모델을 구축하는 일반적인 방법은 다음과 같습니다:

  1. Sequential 객체를 생성합니다.
  2. add 메서드를 사용하여 순차적으로 층을 추가합니다. 입력부터 출력까지 순서대로 층을 추가합니다.
  3. 모델을 컴파일하고 훈련합니다.

 

 

tensorflow.keras.layers

from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D

tensorflow.keras.layers는 딥 러닝 모델을 구축하는 데 필요한 다양한 레이어(layer)를 불러오는 기능을 제공한다. 딥 러닝에서는 레이어가 모델의 구성 요소로 사용되며, 입력 데이터로부터 출력을 생성하는 역할을 한다.

이 모듈을 사용하여 필요한 레이어를 불러온 후 이를 모델에 추가하여 다양한 딥 러닝 아키텍처를 구축할 수 있다.

이러한 레이어들을 적절히 조합하여 원하는 딥 러닝 모델을 만들 수 있다. 사용되는 데이터 유형과 모델의 목적에 따라 적합한 레이어를 선택하고 조정할 수 있다.

 

 

예시

import tensorflow as tf
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Flatten, Dense



def build_model():
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))

    model.add(Flatten())
    model.add(Dense(512, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
    return model
    
    
    model=build_model()

 

이 함수는 간단한 CNN(Convolutional Neural Network) 아키텍처를 만들어 반환하는 함수이다. 주어진 이미지 데이터에 대한 이진 분류를 위한 모델을 만들기 위해 사용될 수 있다.

이 함수에서 사용되는 레이어들과 그 역할은 다음과 같다:

 

  • Conv2D 레이어:
    • 역할: 2차원 컨볼루션 연산을 수행하여 이미지나 시계열 데이터에서 특징을 추출한다.
    • 사용법: tf.keras.layers.Conv2D(filters, kernel_size, activation, input_shape)와 같이 사용한다. filters는 필터(커널)의 수, kernel_size는 필터의 크기를 지정하며, activation은 활성화 함수를 지정한다.
  • MaxPooling2D 레이어:
    • 역할: 주어진 영역에서 가장 큰 값을 선택하여 공간 차원을 줄인다. 이를 통해 특징 맵의 크기를 감소시키고 계산 비용을 줄인다.
    • 사용법: tf.keras.layers.MaxPooling2D(pool_size)와 같이 사용한다. pool_size는 최대 풀링을 수행할 영역의 크기를 지정한다.
  • Flatten 레이어:
    • 역할: 다차원 입력을 1차원으로 평탄화 한다. 주로 합성곱 레이어의 출력을 완전 연결된 레이어에 전달하기 전에 사용된다.
    • 사용법: 주로 Sequential 모델 내에서 사용되며, 별도의 파라미터 설정 없이 레이어를 추가하면 된다.
  • Dense 레이어:
    • 역할: 완전 연결된 레이어로, 입력과 출력을 모두 연결한니다. 이는 입력 데이터의 선형 변환을 수행하고 비선형 활성화 함수를 적용한다.
    • 사용법: tf.keras.layers.Dense(units, activation, input_shape)와 같이 사용한다. units는 출력의 차원(뉴런의 수)을 지정하고, activation은 활성화 함수를 지정한다.

 

 

 

model.compil 파라미터 용어

이 모델은 이진 분류 작업을 위해 컴파일되며, 손실 함수는 'binary_crossentropy'로 설정되고, 옵티마이저는 'rmsprop'으로 설정되어 있있다. 'accuracy' 지표를 사용하여 모델의 성능을 평가한다.

이 함수를 호출하면 위에 설명된 모델을 반환하게 된다. 이 모델을 사용하여 이미지 분류 작업을 수행할 수 있다.

 

  • 'binary_crossentropy' :
  • 이진 분류 작업에서 주로 사용되는 손실 함수이다. 이 함수는 두 개의 클래스를 가진 분류 문제에서 각각의 클래스에 대한 확률 분포의 차이를 측정한다.

  • ' rmsprop' :
  • 딥 러닝에서 사용되는 최적화 알고리즘 중 하나이다. 이 알고리즘은 경사 하강법(Gradient Descent)의 변종 중 하나로, 모델의 손실 함수를 최소화하기 위해 모델의 가중치를 업데이트한다
  • ' accuracy' :
  • 딥 러닝 모델의 성능을 측정하는 데 사용되는 지표 중 하나이다. 이는 분류(classification) 문제에서 모델이 올바르게 분류한 샘플의 비율을 나타낸니다.

'AI > Deep Learning' 카테고리의 다른 글

[Python] 딥러닝, 오버피팅 확인법, 조기종료 방지  (0) 2024.04.17