liminfo

TensorFlow Reference

TensorFlow 딥러닝 프레임워크 레퍼런스

46개 결과

TensorFlow Reference 소개

TensorFlow 레퍼런스는 딥러닝과 머신러닝을 위한 TensorFlow 및 Keras 생태계를 검색할 수 있는 치트 시트입니다. 텐서 생성과 조작(tf.constant, tf.Variable, tf.reshape, tf.concat), Keras의 Sequential 및 Functional API를 사용한 모델 구축, compile()과 fit()부터 evaluate()와 predict()까지의 전체 모델 라이프사이클을 다룹니다.

이 레퍼런스는 텐서, Keras, 레이어, 옵티마이저, 데이터, 학습, 배포, CLI의 8개 카테고리에 걸쳐 45개 이상의 항목을 체계적으로 정리합니다. 레이어 섹션은 Dense, Conv2D, LSTM, BatchNormalization, Dropout, Embedding, MaxPooling2D를 다루고, 옵티마이저 섹션은 Adam과 SGD 설정, 손실 함수, ExponentialDecay를 사용한 학습률 스케줄러, 과적합 방지를 위한 EarlyStopping 콜백을 포함합니다.

기본적인 모델 구축 외에도 GradientTape를 사용한 커스텀 학습 루프, @tf.function을 통한 그래프 모드 실행, 동결된 기본 레이어와 함께 MobileNetV2를 활용한 전이 학습, map/shuffle/batch/prefetch를 포함한 tf.data.Dataset 파이프라인, ImageDataGenerator를 이용한 이미지 증강, model.save(), TFLite 변환, Docker 기반 TensorFlow Serving, tf2onnx를 사용한 ONNX 내보내기까지의 배포 경로를 포괄합니다.

주요 기능

  • 텐서 연산: tf.constant, tf.Variable, tf.zeros, tf.ones, tf.random.normal, tf.cast, tf.reshape, tf.concat
  • Keras 모델 API: 선형 구조를 위한 Sequential과 공유 레이어가 가능한 복잡한 아키텍처를 위한 Functional API
  • 레이어 레퍼런스: Dense, Conv2D, LSTM, BatchNormalization, Dropout, Embedding, MaxPooling2D와 매개변수
  • 옵티마이저와 손실 함수 설정: Adam, 모멘텀이 있는 SGD, ExponentialDecay 스케줄러, EarlyStopping 콜백
  • 데이터 파이프라인 패턴: shuffle/batch/prefetch를 포함한 tf.data.Dataset, tfds.load(), image_dataset_from_directory
  • GradientTape를 사용한 커스텀 학습과 그래프 모드 성능 최적화를 위한 @tf.function 데코레이터
  • MobileNetV2의 동결된 백본과 커스텀 분류 헤드를 사용한 전이 학습 예제
  • 배포 워크플로우: model.save(), SavedModel 로딩, TFLite 변환, TensorFlow Serving, ONNX 내보내기

자주 묻는 질문

Keras의 Sequential과 Functional API의 차이점은 무엇인가요?

Sequential은 각 레이어가 정확히 하나의 입력과 출력을 가지는 단순한 모델에 적합한 선형 레이어 스택입니다. Functional API는 다중 입력/출력, 공유 레이어, 잔차 연결 등 복잡한 아키텍처를 지원합니다. tf.keras.Input()으로 입력 텐서를 정의하고 레이어를 함수처럼 호출하여 연결하면 계산 그래프를 구축할 수 있습니다.

GradientTape로 커스텀 학습 루프를 어떻게 만드나요?

with tf.GradientTape() as tape: 블록 안에서 순전파를 수행합니다. 이 컨텍스트 내에서 예측값과 손실을 계산한 뒤, tape.gradient(loss, model.trainable_variables)로 그래디언트를 구하고, optimizer.apply_gradients(zip(grads, model.trainable_variables))로 적용합니다. GAN, 강화학습, 커스텀 손실 계산 등 학습 단계를 완전히 제어해야 할 때 유용합니다.

@tf.function은 언제 사용해야 하나요?

@tf.function은 Python 함수를 TensorFlow 그래프로 변환하여 더 빠르게 실행합니다. 반복적으로 호출되는 학습 단계와 추론 함수에 사용하세요. 첫 번째 호출에서 함수를 트레이싱하고 그래프를 컴파일하며, 이후 호출에서는 Python 오버헤드를 건너뜁니다. Python 부작용이 있거나 호출마다 바뀌는 동적 제어 흐름이 있는 함수에는 사용을 피하세요.

사전 학습된 모델로 전이 학습을 어떻게 설정하나요?

MobileNetV2 같은 사전 학습 모델을 weights="imagenet"과 include_top=False로 로드하여 분류 헤드를 제거합니다. base.trainable = False로 모든 레이어를 동결한 뒤, 위에 GlobalAveragePooling2D와 Dense 레이어를 추가합니다. 낮은 학습률로 학습한 후, 선택적으로 기본 모델의 마지막 몇 레이어를 동결 해제하여 미세 조정할 수 있습니다.

데이터 파이프라인 구축에 권장되는 방법은 무엇인가요?

메모리 내 데이터에는 tf.data.Dataset.from_tensor_slices()를, 이미지 폴더에는 tf.keras.utils.image_dataset_from_directory()를 사용합니다. .shuffle(buffer_size)로 무작위화, .map(preprocess_fn)으로 변환, .batch(32)로 배치 처리, .prefetch(tf.data.AUTOTUNE)로 데이터 로딩과 학습을 중첩합니다. NumPy 배열을 직접 전달하는 것보다 훨씬 빠릅니다.

학습 중 과적합을 어떻게 방지하나요?

여러 전략을 조합합니다: Dense 레이어 사이에 Dropout 추가, 학습 안정성을 위한 BatchNormalization 적용, monitor="val_loss"와 restore_best_weights=True를 설정한 EarlyStopping 콜백 사용, ImageDataGenerator로 데이터 증강, model.fit()에서 validation_split 활용. ModelCheckpoint 콜백은 검증 메트릭 기준으로 최적의 모델을 저장합니다.

모바일 배포를 위해 TFLite로 어떻게 변환하나요?

tf.lite.TFLiteConverter.from_saved_model("saved_model/")로 변환기를 생성하고 converter.convert()를 호출하여 TFLite 플랫버퍼를 생성합니다. 결과를 .tflite 파일로 저장합니다. 추가 최적화를 위해 converter.optimizations = [tf.lite.Optimize.DEFAULT]로 양자화를 활성화하면 모델 크기를 줄이고 모바일 및 엣지 디바이스에서의 추론 속도를 향상시킬 수 있습니다.

TensorFlow가 GPU를 사용하고 있는지 어떻게 확인하나요?

tf.config.list_physical_devices("GPU")를 호출하여 사용 가능한 GPU 목록을 확인합니다. 목록이 비어 있으면 CPU에서만 실행 중입니다. tensorflow[and-cuda] 패키지(또는 적절한 GPU 패키지)를 설치하고, 호환되는 NVIDIA 드라이버, CUDA 툴킷, cuDNN이 설치되어 있는지 확인하세요. tf.debugging 도구와 TensorBoard로 학습 중 GPU 활용률을 모니터링할 수 있습니다.