본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 12. 2. · 13 Views
TensorFlow 소개 및 환경 설정 완벽 가이드
딥러닝 입문자를 위한 TensorFlow 설치부터 첫 번째 코드 실행까지의 여정을 다룹니다. 복잡해 보이는 환경 설정을 단계별로 쉽게 따라할 수 있도록 안내합니다.
목차
- TensorFlow란_무엇인가
- TensorFlow_vs_PyTorch_비교
- Python_환경_설정
- TensorFlow_설치
- GPU_지원_확인
- 첫_번째_TensorFlow_코드_실행
1. TensorFlow란 무엇인가
김개발 씨는 최근 인공지능 뉴스를 보다가 문득 궁금해졌습니다. "딥러닝이 대세라는데, 나도 한번 시작해볼까?" 하지만 어디서부터 시작해야 할지 막막했습니다.
그때 선배 박시니어 씨가 말했습니다. "일단 TensorFlow부터 배워봐요."
TensorFlow는 구글이 만든 오픈소스 머신러닝 프레임워크입니다. 마치 레고 블록처럼 신경망을 조립할 수 있게 해주는 도구라고 생각하면 됩니다.
이미지 인식, 자연어 처리, 추천 시스템 등 다양한 AI 애플리케이션을 개발할 수 있습니다.
다음 코드를 살펴봅시다.
import tensorflow as tf
# TensorFlow 버전 확인
print(f"TensorFlow 버전: {tf.__version__}")
# 간단한 텐서 생성
tensor_a = tf.constant([[1, 2], [3, 4]])
tensor_b = tf.constant([[5, 6], [7, 8]])
# 텐서 연산 수행
result = tf.matmul(tensor_a, tensor_b)
print(f"행렬 곱셈 결과:\n{result}")
# 텐서의 형태와 데이터 타입 확인
print(f"텐서 형태: {result.shape}")
print(f"데이터 타입: {result.dtype}")
김개발 씨는 입사 1년 차 백엔드 개발자입니다. 평소 데이터 분석에 관심이 많았던 그는 회사에서 진행하는 AI 프로젝트 소식을 듣고 가슴이 뛰었습니다.
"나도 AI 개발자가 될 수 있을까?" 점심시간, 김개발 씨는 AI팀의 박시니어 씨에게 조심스럽게 물었습니다. "선배, 딥러닝 시작하려면 뭐부터 해야 해요?" 박시니어 씨는 웃으며 대답했습니다.
"TensorFlow부터 시작해보는 게 좋을 것 같아요. 구글에서 만든 프레임워크인데, 입문자에게 괜찮거든요." 그렇다면 TensorFlow란 정확히 무엇일까요?
쉽게 비유하자면, TensorFlow는 마치 거대한 계산 공장과 같습니다. 이 공장에는 수많은 컨베이어 벨트가 있고, 그 위로 텐서라는 데이터 상자들이 흘러갑니다.
각 작업 스테이션에서는 덧셈, 곱셈, 변환 등의 연산이 수행되고, 최종적으로 완성품인 예측 결과가 나오는 것입니다. 여기서 **텐서(Tensor)**란 다차원 배열을 의미합니다.
숫자 하나는 0차원 텐서, 숫자들의 배열은 1차원 텐서, 행렬은 2차원 텐서입니다. 이미지 데이터는 보통 3차원 텐서로 표현됩니다.
TensorFlow가 등장하기 전에는 어땠을까요? 개발자들은 복잡한 수학 공식을 직접 코드로 구현해야 했습니다.
행렬 연산, 미분 계산, 역전파 알고리즘까지 모두 수작업이었습니다. 실수 한 번이면 전체 모델이 제대로 학습되지 않았습니다.
2015년 구글이 TensorFlow를 오픈소스로 공개하면서 상황이 달라졌습니다. 이제 개발자들은 복잡한 수학적 구현 대신 무엇을 만들 것인가에 집중할 수 있게 되었습니다.
마치 자동차를 만들기 위해 엔진부터 직접 제작할 필요 없이, 잘 만들어진 부품을 조립하면 되는 것처럼요. 위의 코드를 살펴보겠습니다.
먼저 tf.constant로 텐서를 생성합니다. 이것은 변하지 않는 상수 텐서를 만드는 함수입니다.
tf.matmul은 두 행렬의 곱셈을 수행합니다. 딥러닝에서 행렬 곱셈은 신경망의 핵심 연산이기 때문에 매우 자주 사용됩니다.
실제 현업에서 TensorFlow는 다양한 곳에 활용됩니다. 구글 포토의 얼굴 인식, 유튜브의 추천 시스템, 구글 번역기 모두 TensorFlow를 기반으로 합니다.
국내에서도 네이버, 카카오 등 많은 기업이 TensorFlow를 활용한 AI 서비스를 운영하고 있습니다. 김개발 씨는 고개를 끄덕였습니다.
"생각보다 진입장벽이 낮을 수도 있겠네요." 박시니어 씨가 덧붙였습니다. "맞아요.
일단 시작해보는 게 중요해요. 환경 설정부터 차근차근 해봐요."
실전 팁
💡 - TensorFlow 2.x 버전을 사용하세요. 1.x 버전은 레거시이며 더 이상 권장되지 않습니다.
- 공식 튜토리얼(tensorflow.org/tutorials)은 입문자에게 훌륭한 학습 자료입니다.
2. TensorFlow vs PyTorch 비교
환경 설정을 시작하려던 김개발 씨가 검색을 하다가 혼란에 빠졌습니다. "어떤 글에서는 TensorFlow를 추천하고, 어떤 글에서는 PyTorch가 더 좋다고 하네요." 과연 어떤 프레임워크를 선택해야 할까요?
TensorFlow와 PyTorch는 딥러닝 양대 산맥입니다. TensorFlow는 구글이, PyTorch는 메타(구 페이스북)가 개발했습니다.
마치 안드로이드와 iOS처럼 각자의 장단점이 있으며, 선택은 상황과 목적에 따라 달라집니다.
다음 코드를 살펴봅시다.
# TensorFlow 스타일
import tensorflow as tf
# 모델 정의 (Sequential API)
tf_model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
# 모델 컴파일
tf_model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# 모델 구조 확인
tf_model.summary()
김개발 씨는 인터넷 커뮤니티에서 격렬한 논쟁을 목격했습니다. "TensorFlow가 짱이다", "아니야, PyTorch가 훨씬 낫다".
마치 축구팀 팬들의 응원전 같았습니다. 혼란스러워진 김개발 씨는 다시 박시니어 씨를 찾아갔습니다.
"선배, 도대체 뭘 배워야 해요?" 박시니어 씨는 차분하게 설명을 시작했습니다. "둘 다 훌륭한 프레임워크예요.
목적에 따라 선택하면 됩니다." TensorFlow의 강점은 프로덕션 환경에 있습니다. TensorFlow Serving, TensorFlow Lite, TensorFlow.js 등 다양한 배포 도구를 제공합니다.
서버, 모바일, 웹 브라우저 어디서든 모델을 실행할 수 있습니다. 대규모 서비스를 운영하는 기업에서 TensorFlow를 선호하는 이유입니다.
반면 PyTorch는 직관적인 코드가 장점입니다. 파이썬 문법에 더 가깝고, 디버깅이 쉽습니다.
코드를 한 줄씩 실행하면서 텐서의 값을 바로 확인할 수 있습니다. 그래서 연구자들과 학계에서 PyTorch를 많이 사용합니다.
마치 두 프레임워크를 레스토랑에 비유할 수 있습니다. TensorFlow는 체인 레스토랑처럼 표준화된 레시피와 효율적인 시스템을 갖추고 있습니다.
어디서든 일관된 품질의 음식을 대량으로 제공할 수 있죠. PyTorch는 셰프의 창작 요리 레스토랑 같습니다.
자유롭게 실험하고, 즉석에서 레시피를 수정할 수 있습니다. 하지만 최근에는 두 프레임워크의 차이가 많이 줄었습니다.
TensorFlow 2.0부터는 Eager Execution이 기본값이 되어 PyTorch처럼 직관적인 코딩이 가능해졌습니다. PyTorch도 TorchServe 등 배포 도구를 강화하고 있습니다.
위의 코드는 TensorFlow의 Keras API를 사용한 예제입니다. Keras는 TensorFlow의 고수준 API로, 몇 줄의 코드만으로 신경망을 정의할 수 있습니다.
Sequential 모델은 레이어를 순차적으로 쌓는 가장 간단한 방식입니다. 실무에서의 선택 기준을 정리하자면 이렇습니다.
모바일 앱에 AI를 넣고 싶다면 TensorFlow가 유리합니다. 논문을 구현하거나 빠르게 아이디어를 테스트하고 싶다면 PyTorch가 편합니다.
둘 다 할 줄 아는 게 가장 좋습니다. 김개발 씨가 물었습니다.
"그래서 저는 뭘 선택해야 해요?" 박시니어 씨가 답했습니다. "회사에서 TensorFlow 쓰고 있으니까 일단 TensorFlow로 시작해요.
기본기가 쌓이면 PyTorch도 금방 배울 수 있어요."
실전 팁
💡 - 입문 단계에서는 하나만 깊이 파세요. 기본 개념은 공통이므로 나중에 전환이 어렵지 않습니다.
- 취업을 준비한다면 지원하는 회사가 어떤 프레임워크를 사용하는지 확인해보세요.
3. Python 환경 설정
이제 본격적으로 환경을 설정할 차례입니다. 김개발 씨는 파이썬을 설치하고 바로 pip install tensorflow를 실행하려 했습니다.
그때 박시니어 씨가 말렸습니다. "잠깐, 가상환경부터 만들어야 해요.
안 그러면 나중에 큰일 나요."
가상환경은 프로젝트마다 독립된 파이썬 환경을 만들어주는 도구입니다. 마치 각 프로젝트에게 개인 방을 주는 것과 같습니다.
venv는 파이썬 내장 도구이고, conda는 아나콘다에서 제공하는 더 강력한 패키지 관리자입니다.
다음 코드를 살펴봅시다.
# 방법 1: venv (파이썬 내장)
# 가상환경 생성
python -m venv tensorflow_env
# 가상환경 활성화 (Windows)
tensorflow_env\Scripts\activate
# 가상환경 활성화 (macOS/Linux)
source tensorflow_env/bin/activate
# 방법 2: conda (Anaconda/Miniconda)
# 가상환경 생성 (Python 3.10 지정)
conda create -n tensorflow_env python=3.10
# 가상환경 활성화
conda activate tensorflow_env
# 가상환경 목록 확인
conda env list
김개발 씨는 이전에 파이썬 프로젝트를 하다가 낭패를 본 적이 있습니다. A 프로젝트에서 pandas 1.3을 설치했는데, B 프로젝트에서 pandas 2.0이 필요했습니다.
업그레이드하니 A 프로젝트가 망가졌고, 다운그레이드하니 B가 안 돌아갔습니다. 박시니어 씨가 말했습니다.
"그래서 가상환경이 필요한 거예요. 각 프로젝트를 격리된 공간에서 관리하면 그런 문제가 없어요." 가상환경을 비유하자면 이렇습니다.
여러분의 컴퓨터가 아파트 건물이라고 상상해보세요. 가상환경 없이 패키지를 설치하면 모든 세대가 하나의 거실을 공유하는 것과 같습니다.
누군가 가구를 바꾸면 모두가 영향을 받습니다. 가상환경은 각 세대에 독립된 공간을 만들어줍니다.
먼저 venv를 알아봅시다. 파이썬 3.3부터 기본 내장된 도구입니다.
별도 설치 없이 바로 사용할 수 있다는 것이 장점입니다. python -m venv 환경이름 명령으로 가상환경을 만들고, activate 스크립트로 활성화합니다.
conda는 아나콘다(Anaconda) 또는 미니콘다(Miniconda)와 함께 제공되는 패키지 관리자입니다. venv보다 강력한 점이 있는데, 파이썬 버전 자체도 관리할 수 있습니다.
예를 들어 python=3.10을 지정하면 해당 버전의 파이썬이 설치된 환경이 만들어집니다. TensorFlow 환경 설정에서 conda가 유용한 이유가 있습니다.
TensorFlow는 특정 파이썬 버전과의 호환성이 중요합니다. conda를 사용하면 TensorFlow가 안정적으로 동작하는 파이썬 버전을 정확히 지정할 수 있습니다.
가상환경을 활성화하면 터미널 프롬프트 앞에 환경 이름이 표시됩니다. (tensorflow_env) 같은 표시가 보이면 제대로 활성화된 것입니다.
이 상태에서 pip install을 하면 해당 환경에만 패키지가 설치됩니다. 작업을 마치고 가상환경을 빠져나오려면 deactivate 명령을 사용합니다.
conda 환경에서는 conda deactivate입니다. 김개발 씨가 물었습니다.
"venv랑 conda 중에 뭘 쓰는 게 좋아요?" 박시니어 씨가 답했습니다. "데이터 사이언스나 머신러닝 할 거면 conda가 편해요.
numpy, scipy 같은 과학 계산 패키지 설치가 훨씬 수월하거든요. 하지만 venv도 충분히 좋아요.
중요한 건 뭐든 하나는 쓰라는 거예요."
실전 팁
💡 - 프로젝트마다 가상환경을 만드는 습관을 들이세요. 나중에 고생을 덜어줍니다.
- conda를 처음 설치한다면 Anaconda보다 가벼운 Miniconda를 추천합니다.
- requirements.txt 파일로 패키지 목록을 관리하면 환경 재현이 쉬워집니다.
4. TensorFlow 설치
가상환경을 만든 김개발 씨는 드디어 TensorFlow를 설치할 차례가 되었습니다. "pip install tensorflow 하면 끝이죠?" 박시니어 씨가 고개를 저었습니다.
"GPU를 쓸 건지 CPU만 쓸 건지에 따라 달라요."
TensorFlow는 CPU 버전과 GPU 버전이 있습니다. CPU 버전은 설치가 간단하지만 학습 속도가 느립니다.
GPU 버전은 NVIDIA 그래픽 카드를 활용하여 수십 배 빠른 연산이 가능합니다. 본인의 하드웨어 환경에 맞는 버전을 선택해야 합니다.
다음 코드를 살펴봅시다.
# 가상환경 활성화 상태에서 진행
# 방법 1: CPU 전용 설치 (간단, 어디서든 동작)
pip install tensorflow
# 방법 2: GPU 지원 설치 (TensorFlow 2.x는 CPU/GPU 통합)
# TensorFlow 2.x부터는 기본 패키지에 GPU 지원 포함
pip install tensorflow
# 특정 버전 설치
pip install tensorflow==2.15.0
# 설치 확인
python -c "import tensorflow as tf; print(tf.__version__)"
# GPU 사용 가능 여부 확인
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
김개발 씨는 자신의 노트북 사양을 확인해봤습니다. 다행히 NVIDIA GeForce GTX 1650이 장착되어 있었습니다.
"GPU가 있으니까 GPU 버전을 설치해야겠네요." 박시니어 씨가 반가운 소식을 전했습니다. "예전에는 tensorflow-gpu라는 별도 패키지가 있었는데, 이제는 그냥 tensorflow만 설치하면 돼요.
2.x 버전부터 통합됐거든요." CPU와 GPU의 차이를 비유하자면 이렇습니다. CPU는 매우 똑똑한 직원 한 명입니다.
복잡한 계산을 순서대로 정확하게 처리합니다. GPU는 단순한 일을 하는 직원 수천 명입니다.
개별 능력은 CPU보다 못하지만, 같은 작업을 동시에 병렬로 처리할 수 있습니다. 딥러닝에서는 행렬 연산이 핵심입니다.
수백만 개의 숫자를 더하고 곱하는 작업이 반복됩니다. 이런 단순 반복 작업은 GPU가 압도적으로 빠릅니다.
같은 모델을 학습시킬 때 CPU로 10시간 걸리는 작업이 GPU로는 30분 만에 끝나기도 합니다. 위의 코드에서 pip install tensorflow가 핵심입니다.
이 명령 하나로 TensorFlow와 필요한 의존성 패키지들이 모두 설치됩니다. 설치 후에는 반드시 버전을 확인해보세요.
튜토리얼이나 예제 코드와 버전이 맞아야 문제없이 실행됩니다. **tf.config.list_physical_devices('GPU')**는 시스템에서 사용 가능한 GPU를 확인하는 코드입니다.
빈 리스트가 반환되면 GPU를 인식하지 못한 것입니다. 이 경우 CUDA와 cuDNN 설정을 확인해야 합니다.
실무에서 한 가지 주의할 점이 있습니다. TensorFlow는 버전에 따라 지원하는 CUDA 버전이 다릅니다.
TensorFlow 2.15는 CUDA 12.x를, TensorFlow 2.10은 CUDA 11.x를 지원합니다. 버전 호환성을 반드시 확인해야 합니다.
공식 문서의 호환성 표를 참고하세요. 김개발 씨가 설치를 완료하고 확인 명령을 실행했습니다.
버전은 제대로 나오는데 GPU 목록이 비어 있었습니다. "선배, GPU가 안 잡혀요!" 박시니어 씨가 말했습니다.
"CUDA 설정이 안 되어 있어서 그래요. 다음 단계로 넘어가죠."
실전 팁
💡 - 회사나 학교 서버를 사용한다면 이미 CUDA가 설치되어 있을 수 있습니다. 관리자에게 확인해보세요.
- GPU가 없어도 TensorFlow를 배우는 데는 문제없습니다. 학습용 작은 데이터셋은 CPU로도 충분합니다.
5. GPU 지원 확인
GPU가 인식되지 않아 당황한 김개발 씨에게 박시니어 씨가 말했습니다. "NVIDIA GPU를 TensorFlow에서 쓰려면 CUDA와 cuDNN을 설치해야 해요.
조금 복잡하지만 한 번만 해두면 됩니다."
CUDA는 NVIDIA가 만든 GPU 병렬 컴퓨팅 플랫폼입니다. cuDNN은 딥러닝에 최적화된 라이브러리입니다.
이 두 가지가 제대로 설치되어야 TensorFlow가 GPU를 활용할 수 있습니다. 버전 호환성이 매우 중요합니다.
다음 코드를 살펴봅시다.
# CUDA 설치 확인 (터미널에서)
nvcc --version
# NVIDIA 드라이버 및 GPU 상태 확인
nvidia-smi
# Python에서 TensorFlow GPU 확인
import tensorflow as tf
# GPU 장치 목록 확인
gpus = tf.config.list_physical_devices('GPU')
print(f"사용 가능한 GPU: {gpus}")
# GPU 메모리 동적 할당 설정 (권장)
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
# 상세 GPU 정보 확인
if gpus:
print(f"GPU 이름: {tf.test.gpu_device_name()}")
print("GPU 연산 테스트...")
with tf.device('/GPU:0'):
a = tf.constant([[1.0, 2.0], [3.0, 4.0]])
b = tf.constant([[5.0, 6.0], [7.0, 8.0]])
c = tf.matmul(a, b)
print(f"GPU 연산 결과:\n{c}")
김개발 씨는 처음 듣는 용어들에 머리가 복잡해졌습니다. "CUDA?
cuDNN? 이건 또 뭐예요?" 박시니어 씨가 차근차근 설명했습니다.
"GPU는 원래 게임 그래픽을 위해 만들어졌어요. 그걸 일반 연산에 활용할 수 있게 해주는 게 CUDA예요." CUDA(Compute Unified Device Architecture)를 비유하자면, GPU라는 강력한 엔진을 일반 프로그래머도 운전할 수 있게 해주는 운전면허 같은 것입니다.
원래 GPU는 그래픽 전문가만 다룰 수 있었는데, CUDA 덕분에 누구나 GPU의 연산 능력을 활용할 수 있게 되었습니다. cuDNN(CUDA Deep Neural Network library)은 딥러닝 연산에 특화된 라이브러리입니다.
컨볼루션, 풀링, 활성화 함수 등 신경망의 핵심 연산을 GPU에서 최적화하여 실행합니다. TensorFlow는 내부적으로 cuDNN을 사용하여 GPU 가속을 구현합니다.
설치 순서가 중요합니다. 먼저 NVIDIA 드라이버를 설치합니다.
대부분의 경우 그래픽 카드를 사용하고 있다면 이미 설치되어 있습니다. nvidia-smi 명령으로 확인할 수 있습니다.
드라이버 버전과 지원하는 CUDA 버전이 표시됩니다. 다음으로 CUDA Toolkit을 설치합니다.
NVIDIA 개발자 사이트에서 다운로드할 수 있습니다. 설치 후 nvcc --version 명령으로 확인합니다.
마지막으로 cuDNN을 설치합니다. NVIDIA 개발자 계정이 필요합니다.
버전 호환성이 까다롭습니다. TensorFlow 공식 문서에 각 버전별 요구사항이 정리되어 있습니다.
예를 들어 TensorFlow 2.15는 CUDA 12.2와 cuDNN 8.9를 요구합니다. 버전이 맞지 않으면 GPU를 인식하지 못합니다.
위 코드에서 set_memory_growth는 중요한 설정입니다. 기본적으로 TensorFlow는 사용 가능한 GPU 메모리를 모두 점유합니다.
이 설정을 활성화하면 필요한 만큼만 메모리를 할당합니다. 여러 프로그램이 GPU를 공유해야 할 때 유용합니다.
**tf.device('/GPU:0')**은 특정 연산을 GPU에서 실행하도록 지정합니다. 여러 GPU가 있다면 /GPU:1, /GPU:2처럼 지정할 수 있습니다.
김개발 씨는 한숨을 쉬었습니다. "설정이 좀 복잡하네요." 박시니어 씨가 위로했습니다.
"처음이 어려워요. 한 번 해두면 계속 쓸 수 있으니까요.
그리고 요즘은 Google Colab 같은 클라우드 환경을 쓰면 이런 설정 없이도 GPU를 쓸 수 있어요."
실전 팁
💡 - Google Colab은 무료로 GPU를 사용할 수 있어 입문자에게 좋습니다. 환경 설정 없이 바로 시작할 수 있습니다.
- Windows에서는 WSL2(Windows Subsystem for Linux)를 사용하면 리눅스 환경에서 CUDA를 더 쉽게 설정할 수 있습니다.
- 버전 호환성 문제가 생기면 TensorFlow 공식 GitHub의 이슈를 검색해보세요.
6. 첫 번째 TensorFlow 코드 실행
드디어 모든 환경 설정을 마친 김개발 씨는 설레는 마음으로 첫 번째 딥러닝 코드를 작성하려 합니다. 박시니어 씨가 말했습니다.
"딥러닝의 Hello World라고 할 수 있는 MNIST 손글씨 인식을 해볼까요?"
MNIST는 0부터 9까지의 손글씨 숫자 이미지 데이터셋입니다. 딥러닝 입문의 정석으로, 간단하면서도 신경망의 핵심 개념을 모두 배울 수 있습니다.
이 예제를 통해 데이터 로드, 모델 정의, 학습, 평가의 전체 흐름을 익힐 수 있습니다.
다음 코드를 살펴봅시다.
import tensorflow as tf
# 1. MNIST 데이터셋 로드
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 2. 데이터 전처리 (0~255 값을 0~1로 정규화)
x_train, x_test = x_train / 255.0, x_test / 255.0
# 3. 모델 정의
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)), # 2D -> 1D
tf.keras.layers.Dense(128, activation='relu'), # 은닉층
tf.keras.layers.Dropout(0.2), # 과적합 방지
tf.keras.layers.Dense(10, activation='softmax') # 출력층 (0~9)
])
# 4. 모델 컴파일
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 5. 모델 학습
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
# 6. 모델 평가
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\n테스트 정확도: {test_acc:.4f}')
김개발 씨가 코드를 실행하자 화면에 학습 진행 상황이 출력되기 시작했습니다. Epoch 1/5...
loss: 0.2934... accuracy: 0.9145...
숫자들이 빠르게 바뀌었습니다. "와, 진짜 학습이 되고 있어요!" 김개발 씨는 감탄했습니다.
박시니어 씨가 코드를 한 줄씩 설명했습니다. "이 짧은 코드에 딥러닝의 핵심이 다 들어 있어요.
하나씩 살펴볼까요?" 먼저 **mnist.load_data()**로 데이터를 불러옵니다. 학습용(train) 60,000장과 테스트용(test) 10,000장의 손글씨 이미지가 준비됩니다.
각 이미지는 28x28 픽셀 크기입니다. 데이터 정규화는 매우 중요한 전처리 과정입니다.
원본 픽셀값은 0부터 255 사이입니다. 이를 255로 나누어 0부터 1 사이의 값으로 변환합니다.
신경망은 작은 범위의 숫자를 더 잘 처리합니다. 마치 저울의 눈금을 맞추는 것과 같습니다.
모델 구조를 살펴봅시다. Flatten 레이어는 28x28 픽셀의 2차원 이미지를 784개의 1차원 배열로 펼칩니다.
접힌 수건을 펴는 것처럼요. Dense(128) 레이어는 128개의 뉴런을 가진 완전연결층입니다.
각 뉴런이 입력 데이터의 패턴을 학습합니다. relu 활성화 함수는 음수를 0으로 만들고 양수는 그대로 통과시킵니다.
단순하지만 강력한 비선형성을 제공합니다. **Dropout(0.2)**은 학습 중에 무작위로 20%의 뉴런을 비활성화합니다.
시험 전에 공부할 때 모든 문제만 외우지 않고 원리를 이해하게 만드는 것과 같습니다. 이를 통해 **과적합(overfitting)**을 방지합니다.
마지막 Dense(10) 레이어는 0부터 9까지 10개의 숫자에 대한 확률을 출력합니다. softmax 활성화 함수는 출력을 확률 분포로 변환합니다.
모든 출력의 합이 1이 됩니다. model.compile에서 옵티마이저, 손실 함수, 평가 지표를 설정합니다.
adam은 가장 널리 쓰이는 최적화 알고리즘입니다. sparse_categorical_crossentropy는 다중 클래스 분류 문제의 표준 손실 함수입니다.
model.fit이 실제 학습을 수행합니다. epochs=5는 전체 데이터를 5번 반복 학습한다는 의미입니다.
validation_split=0.1은 학습 데이터의 10%를 검증용으로 분리합니다. 학습이 완료되고 테스트 정확도가 출력되었습니다.
97% 이상의 정확도! 단 20줄 남짓의 코드로 손글씨를 인식하는 인공지능을 만든 것입니다.
김개발 씨의 눈이 반짝였습니다. "이게 바로 딥러닝이군요!" 박시니어 씨가 미소 지었습니다.
"이제 시작이에요. 이 기본 구조를 이해하면 이미지 분류, 자연어 처리, 추천 시스템까지 확장할 수 있어요.
축하해요, 첫 번째 딥러닝 모델을 완성했네요!"
실전 팁
💡 - epochs 수를 늘리면 정확도가 올라가지만, 너무 많이 학습하면 과적합이 발생합니다.
- model.summary()로 모델 구조를 한눈에 볼 수 있습니다. 파라미터 수도 확인해보세요.
- 학습된 모델은 model.save('my_model.h5')로 저장하고, tf.keras.models.load_model로 불러올 수 있습니다.
이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!
댓글 (0)
함께 보면 좋은 카드 뉴스
Helm 마이크로서비스 패키징 완벽 가이드
Kubernetes 환경에서 마이크로서비스를 효율적으로 패키징하고 배포하는 Helm의 핵심 기능을 실무 중심으로 학습합니다. Chart 생성부터 릴리스 관리까지 체계적으로 다룹니다.
보안 아키텍처 구성 완벽 가이드
프로젝트의 보안을 처음부터 설계하는 방법을 배웁니다. AWS 환경에서 VPC부터 WAF, 암호화, 접근 제어까지 실무에서 바로 적용할 수 있는 보안 아키텍처를 단계별로 구성해봅니다.
AWS Organizations 완벽 가이드
여러 AWS 계정을 체계적으로 관리하고 통합 결제와 보안 정책을 적용하는 방법을 실무 스토리로 쉽게 배워봅니다. 초보 개발자도 바로 이해할 수 있는 친절한 설명과 실전 예제를 제공합니다.
AWS KMS 암호화 완벽 가이드
AWS KMS(Key Management Service)를 활용한 클라우드 데이터 암호화 방법을 초급 개발자를 위해 쉽게 설명합니다. CMK 생성부터 S3, EBS 암호화, 봉투 암호화까지 실무에 필요한 모든 내용을 담았습니다.
AWS Secrets Manager 완벽 가이드
AWS에서 데이터베이스 비밀번호, API 키 등 민감한 정보를 안전하게 관리하는 Secrets Manager의 핵심 개념과 실무 활용법을 배워봅니다. 초급 개발자도 쉽게 따라할 수 있도록 실전 예제와 함께 설명합니다.