AICE Associate 딥러닝 실전 교본 — 도해로 익히고 코드로 끝낸다목차

Part I. 시험의 지도 · Chapter 1

AICE Associate 시험 구조와 학습 지도

이 챕터에서 배우는 것 — 실기 시험이 어떤 순서로 흘러가는지, 어디까지가 공부할 범위인지, 90분을 어떻게 쪼갤지를 먼저 확정합니다. 나머지 일곱 챕터는 모두 이 지도 위에 놓입니다.

AICE(AI Certificate for Everyone)는 KT가 주관하는 인공지능 활용 능력 자격이고, 그중 Associate 등급은 온라인 실기 시험입니다. 객관식으로 개념을 묻는 시험이 아니라, Jupyter와 비슷한 환경에서 실제로 Python 코드를 작성해 제출하는 시험입니다. 그래서 "무엇을 아는가"보다 "빈 셀 앞에서 손이 움직이는가"가 점수를 가릅니다.

이 챕터에서는 코드를 거의 쓰지 않습니다. 대신 앞으로 일곱 챕터 동안 무엇을 향해 달릴지, 그 목적지를 그림 네 장으로 못 박아 두겠습니다.

ℹ️ 공지 확인 안내 — 시험 시간, 문항 수, 배점 체계, 실기 환경의 라이브러리 버전은 회차에 따라 달라질 수 있습니다. 이 교재의 수치는 공개된 안내를 바탕으로 한 기준선이며, 응시 전에 KT AICE 공식 사이트의 시험 안내 공지를 반드시 직접 확인하십시오.


1. 시험은 어떤 순서로 흘러가는가

AICE Associate 실기 시험의 문항 흐름 — 데이터 로딩·탐색부터 평가까지 여섯 단계가 좌에서 우로 이어지며, 딥러닝과 평가 두 단계가 이 교재의 집중 구간이다. AICE Associate 실기 시험의 문항 흐름 이 교재의 집중 구간 데이터 로딩·탐색 2~3문항 전처리 4~5문항 데이터 분리 1문항 머신러닝 1~2문항 딥러닝 2~3문항 평가 1~2문항 문항 수는 회차별로 달라집니다 — 시험 공지 기준으로 확인하십시오.
그림 1-1AICE Associate 실기 시험의 문항 흐름

한 줄 요약: 실기 시험은 하나의 데이터셋을 놓고 "탐색 → 전처리 → 분리 → 모델링 → 평가" 순서를 그대로 따라가는 단계형 문제 묶음입니다.

문항이 무작위로 흩어져 있지 않다는 점이 이 시험의 가장 큰 특징입니다. 1번 문항에서 데이터를 불러오고, 몇 문항 뒤에서 결측치를 채우고, 그다음 학습 데이터와 평가(테스트) 데이터를 나누고, 후반부에서 딥러닝 모델을 만들어 성능을 출력하는 흐름입니다. 각 문항은 "○○ 컬럼의 결측치를 중앙값으로 대체하시오", "학습 데이터와 평가 데이터를 7:3으로 분리하시오"처럼 지시가 명확한 서술형 과제로 주어집니다.

문항 수는 공개된 안내 기준 14문항 내외로 알려져 있으나 회차별 변동이 있으므로, 정확한 수치는 시험 공지 기준으로 확인하십시오. 중요한 것은 개수가 아니라 비중입니다. 도해에서 딥러닝 구간만 진하게 칠해 둔 이유가 여기 있습니다. 앞쪽 전처리 문항들은 정해진 함수를 정확히 쓰면 되는 확정적인 점수 구간이고, 뒤쪽 딥러닝 문항들은 배점이 크면서 동시에 시간이 부족해 손도 못 대는 사람이 가장 많이 나오는 구간입니다. 이 교재가 딥러닝에 집중하는 이유입니다.

⚠️ 시험 포인트 — 문항은 앞 문항의 결과를 이어받습니다
4번에서 결측치를 처리한 데이터프레임을 6번에서 인코딩하고, 그것을 7번에서 분리합니다. 앞 단계를 건너뛰면 뒤 단계가 통째로 무너집니다. 막히는 문항이 있으면 완벽한 답을 포기하더라도 다음 단계가 이어받을 수 있는 형태의 결과물(예: 결측치를 일단 채운 데이터프레임)을 반드시 만들어 두고 넘어가십시오.

채점 단위도 같은 맥락입니다. 정답 코드 한 벌 전체가 통과/실패로 갈리는 방식이 아니라 문항 단위로 점수가 매겨진다고 보는 편이 안전합니다. 그래서 "완성도 높은 답안 하나"보다 "각 단계마다 결과를 남긴 답안"이 유리합니다. 이 전략은 Ch08에서 답안 구성 방식으로 다시 구체화합니다.


2. 어디까지가 시험 범위인가

이 교재가 다루는 범위와 다루지 않는 범위 — 가운데 시험 범위 상자 안에 Dense, 활성화 함수, loss 선택, 콜백, 평가지표가 들어 있고, 바깥 점선 영역에 CNN, RNN·LSTM, Transformer, PyTorch가 범위 밖으로 배치되어 있다. 이 교재가 다루는 범위와 다루지 않는 범위 범위 밖 — 이 교재에서 다루지 않습니다 CNN RNN · LSTM Transformer PyTorch 시험 범위 정형 데이터 + 완전연결 신경망 Dense 활성화 함수 loss 선택 콜백 평가지표 범위 밖 주제는 시험이 끝난 뒤에 시작하십시오.
그림 1-2이 교재가 다루는 범위와 다루지 않는 범위

한 줄 요약: 시험이 요구하는 딥러닝은 표 형태(정형) 데이터를 다루는 완전연결 신경망 한 종류이며, 그 바깥의 화려한 주제들은 공부할 필요가 없습니다.

수험생이 가장 많이 낭비하는 시간이 여기서 발생합니다. "딥러닝 시험"이라는 말을 듣고 이미지 처리용 CNN이나 시계열용 RNN/LSTM 강의부터 찾아보는 경우가 많은데, Associate 실기가 요구하는 것은 그 앞 단계입니다. 엑셀 표처럼 행과 열로 된 데이터를 받아서, 층을 몇 개 쌓고, 문제 유형에 맞는 출력층과 손실 함수를 고르고, 과적합을 막으며 학습시킨 뒤 성능을 출력하는 것. 여기까지가 전부입니다.

범위 안에 있는 것들을 나열하면 이렇습니다.

구분 내용 담당 챕터
전제 지식 데이터 로딩·탐색, 시각화, 결측치·이상치, 인코딩, 스케일링, 데이터 분리, 머신러닝 베이스라인 Ch02
딥러닝 개념 뉴런, 가중치·편향, 은닉층, 활성화 함수(activation function), 순전파·역전파 직관 Ch03
모델 구성 Sequential, Dense, Input, Dropout, BatchNormalization Ch04
컴파일·학습 optimizer, 손실 함수 선택, fit, epochs·batch_size, history Ch05
과적합 대응 학습 곡선 해석, Dropout, EarlyStopping, ModelCheckpoint Ch06
평가·예측 evaluate, predict, 확률→클래스 변환, 분류·회귀 지표 Ch07

📎 더 알아보기 — 시험 무관
CNN, RNN/LSTM, Transformer, 사전학습 모델, PyTorch, 역전파 수식 유도는 Associate 실기 범위 밖입니다. 이 교재에서도 다루지 않습니다. 딥러닝을 더 공부하고 싶다면 시험이 끝난 뒤에 시작하시고, 지금은 위 표의 여섯 줄에만 집중하십시오.

범위를 좁히는 것이 이 시험 준비의 핵심 전략입니다. 시험에 나오는 딥러닝은 패턴이 정해져 있습니다. 이진분류·다중분류·회귀 세 유형 중 하나가 주어지고, 유형에 따라 출력층과 손실 함수 두 곳만 바뀝니다. 그 짝을 외워 두면 딥러닝 문항의 절반이 해결됩니다. 이 짝을 정리한 도해가 Ch05의 손실 함수 선택 분기도이며, 교재 전체에서 가장 중요한 그림입니다.


3. 90분을 어떻게 쓸 것인가

90분 시험 시간 배분 예시 — 탐색 15분, 전처리 25분, 머신러닝 15분, 딥러닝 25분, 검토 10분으로 나눈 가로 타임라인. 딥러닝 구간을 먼저 확보한다. 90분 시험 시간 배분 예시 먼저 확보할 구간 탐색 전처리 머신러닝 딥러닝 검토 15분 25분 15분 25분 10분 0분 15분 40분 55분 80분 90분 예시 배분입니다. 딥러닝 몫을 먼저 떼어 놓고, 마지막 10분은 새 코드 없이 검토용으로 비워 둡니다.
그림 1-390분 시험 시간 배분 예시

한 줄 요약: 앞 단계에서 시간을 쓰다가 딥러닝 문항을 시작도 못 하는 것이 가장 흔한 실패이므로, 구간별 마감 시각을 미리 정해 두십시오.

위 배분은 정답이 아니라 출발점입니다. 자기 속도에 맞춰 조정하되, 조정할 때 지켜야 할 원칙 세 가지가 있습니다.

첫째, 딥러닝 구간을 먼저 떼어 놓습니다. 배점이 크고 되돌리기 어려운 구간이라 남는 시간으로 처리할 대상이 아닙니다. 총 시간에서 딥러닝 몫을 먼저 빼고, 남은 시간을 앞 단계에 나눠 주는 순서로 계산하십시오.

둘째, 시각화 문항에 완성도를 쏟지 않습니다. 그래프의 색상이나 제목을 다듬는 데 쓰는 5분은, 뒤에서 모델 하나를 살릴 수 있는 5분입니다. 지시된 그래프를 지시된 컬럼으로 그려 출력했으면 넘어갑니다.

셋째, 마지막 10분은 검토용으로 비워 둡니다. 이 시간에는 새 코드를 쓰지 않고, 노트북 셀을 위에서부터 다시 실행해 오류 없이 끝까지 도는지, 지시된 변수명과 파일명을 지켰는지만 확인합니다.

⚠️ 시험 포인트 — 지시된 변수명과 random_state는 그대로 씁니다
문제가 "결과를 X_train, X_test, y_train, y_test에 저장하시오", "random_state=42로 설정하시오"라고 지시하면 그 이름과 값이 곧 채점 기준입니다. x_train처럼 대소문자를 바꾸거나 random_state를 생략하면, 코드가 정상 실행되더라도 의도한 점수를 받지 못할 수 있습니다. 지시문에 등장한 이름·숫자·비율은 그대로 옮겨 적는다를 습관으로 만드십시오.


4. 이 교재의 학습 경로

교재 학습 경로와 챕터 의존 관계 — Part I 시험의 지도, Part II 딥러닝의 뼈대, Part III 학습과 개선, Part IV 평가와 실전 순서로 Ch01부터 Ch08까지 위에서 아래로 이어지고, 마지막에 모의고사 1회와 2회가 놓인다. 교재 학습 경로와 챕터 의존 관계 Part I 시험의 지도 Ch01 시험 구조 Ch02 데이터 준비 Part II 딥러닝의 뼈대 Ch03 딥러닝 개념 Ch04 모델 구성 Part III 학습과 개선 Ch05 컴파일·학습 Ch06 과적합 대응 Part IV 평가와 실전 Ch07 평가·예측 Ch08 완성 코드 모의고사 1회 이진분류 모의고사 2회 다중분류 + 회귀 화살표 방향이 권장 학습 순서입니다.
그림 1-4교재 학습 경로와 챕터 의존 관계

한 줄 요약: 개념(Ch03) → 모델 구성(Ch04) → 학습(Ch05) → 개선(Ch06) → 평가(Ch07) 순서는 실제 시험 문항이 흘러가는 순서와 같습니다.

챕터 순서는 지식 체계의 순서가 아니라 시험 답안을 위에서부터 써 내려가는 순서입니다. 그래서 앞 챕터를 건너뛰면 뒤 챕터의 코드가 낯설게 느껴집니다. 특히 Ch04(모델 구성)와 Ch05(컴파일·학습)는 붙어 있는 한 덩어리로 보시는 편이 좋습니다.

시간이 부족한 독자를 위한 우선순위는 이렇습니다. Ch04·Ch05·Ch07을 먼저, 그다음 Ch06, 마지막으로 Ch02·Ch03입니다. Ch02는 이미 아는 내용이라면 표만 훑고 넘어가도 되고, Ch03은 코드를 쓰는 챕터가 아니라 이해를 붙잡아 주는 챕터입니다. 다만 Ch08과 모의고사 2회분은 어떤 경우에도 건너뛰지 마십시오. 아는 것과 90분 안에 쓰는 것은 다른 능력이고, 그 차이를 메우는 것이 마지막 두 단계입니다.


5. 시험장 표준 코드

시험이 시작되면 가장 먼저 확인할 것은 환경입니다. 라이브러리 버전에 따라 일부 문법이 달라질 수 있으므로, 첫 셀에서 버전을 찍어 두면 이후 문제가 생겼을 때 원인을 빠르게 좁힐 수 있습니다.

환경 버전을 확인하는 코드입니다.

import sys
import tensorflow as tf

print('python:', sys.version.split()[0])
print('tensorflow:', tf.__version__)
print('keras:', tf.keras.__version__)

출력 요지: tensorflow: 2.x.x와 같이 세 줄이 찍힙니다. TensorFlow 2.x 계열이면 이 교재의 코드가 그대로 동작합니다.

다음은 모든 챕터와 모의고사에서 공통으로 재사용할 표준 import 블록입니다. 시험장에서 노트북 첫 셀에 통째로 적어 두고 시작하는 용도입니다.

# 데이터 처리
import numpy as np
import pandas as pd

# 시각화
import matplotlib.pyplot as plt
import seaborn as sns

# 전처리 · 분리
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 머신러닝 베이스라인
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression

# 평가지표
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# 딥러닝
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Input, Dense, Dropout, BatchNormalization
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint

print('imports ready')

출력 요지: 오류 없이 imports ready 한 줄만 출력되면 준비가 끝난 것입니다. 지금 각 import가 무엇인지 몰라도 괜찮습니다. Ch02부터 Ch07까지 한 줄씩 차례로 설명합니다.

⚠️ 시험 포인트 — 결과는 반드시 print()로 남깁니다
노트북에서는 셀 마지막 줄의 값이 자동으로 표시되지만, 그 앞줄의 값은 표시되지 않습니다. "○○를 출력하시오"라는 지시가 있다면 명시적으로 print()를 감싸십시오. 값을 변수에 담아 두기만 하고 출력하지 않으면 "출력하시오"라는 요구를 충족하지 못한 답안이 됩니다. 셀을 위에서부터 다시 실행했을 때 화면에 결과가 남아 있는지가 판단 기준입니다.


핵심 요약

항목 기억할 것
시험 형식 온라인 실기 90분, Python 코드 작성형. 문항 수·배점은 시험 공지 기준 확인
문항 구조 탐색 → 전처리 → 분리 → 머신러닝 → 딥러닝 → 평가의 단계형. 앞 문항 결과를 뒤 문항이 이어받음
시험 범위 정형 데이터 + 완전연결 신경망. CNN·RNN·Transformer·PyTorch는 범위 밖
유형 3종 이진분류 / 다중분류 / 회귀 — 유형에 따라 출력층과 손실 함수만 교체
시간 배분 딥러닝 몫을 먼저 확보, 시각화는 최소 완성도, 마지막 10분은 검토
답안 습관 지시된 변수명·random_state 그대로, 단계별 셀 분리, 결과는 print()로 출력

Ch01 확인 문제 — AICE Associate 시험 구조와 학습 지도

본 문제는 공개된 출제 기준에 따른 유형 연습 문제입니다. 기출 원문이 아닌 기출 변형 문항입니다.
시험 시간·문항 수·배점 등 세부 정책은 회차별로 달라질 수 있으므로, 응시 전 KT AICE 공식 사이트의 시험 안내 공지를 반드시 확인하십시오.

구성: 객관식 3문항 / 코드 빈칸 1문항
권장 소요 시간: 10분


문제

Q1. (객관식 · 기본) 시험 범위 판별

다음 보기 중 AICE Associate 실기 시험 범위 안에 있는 주제만 모두 고른 것은?

ㄱ. Dense 층을 쌓아 은닉층 2개짜리 신경망을 만든다
ㄴ. 이미지 데이터를 CNN으로 분류한다
ㄷ. EarlyStopping 콜백으로 학습을 조기 종료한다
ㄹ. Transformer 기반 사전학습 모델을 미세조정한다
ㅁ. 문제 유형에 맞는 손실 함수를 골라 compile에 지정한다

① ㄱ, ㄴ, ㄷ
② ㄱ, ㄷ, ㅁ
③ ㄴ, ㄹ, ㅁ
④ ㄱ, ㄴ, ㄹ, ㅁ
⑤ ㄱ, ㄴ, ㄷ, ㄹ, ㅁ


Q2. (객관식 · 기본) 문항 의존 구조 대응

실기 시험에서 6번 문항 "contract_type 컬럼을 원-핫 인코딩하시오"를 푸는 도중, 함수 사용법이 기억나지 않아 10분째 막혀 있습니다. 뒤이어 7번은 데이터 분리, 8번은 스케일링, 10번부터는 딥러닝 문항입니다.

이때 가장 적절한 대응은?

① 인코딩이 완벽하게 끝날 때까지 이 문항에 계속 매달린다
② 6번 셀을 통째로 비워 두고 7번으로 넘어간다
③ 완성도가 낮더라도 다음 문항이 이어받을 수 있는 형태의 데이터프레임을 만들어 두고 다음 문항으로 넘어간다
④ 1번부터 지우고 처음부터 다시 작성한다
⑤ 6번을 건너뛰고, 마지막 검토 시간 10분에 몰아서 해결한다


Q3. (객관식 · 응용) 답안 작성 습관

AICE Associate 실기 답안 작성 습관에 대한 설명 중 옳지 않은 것은?

① 문항이 X_train, X_test로 저장하라고 지시하면 x_train처럼 대소문자를 바꾸지 않는다
② 문항에 random_state=42가 지정되어 있으면 그 값을 그대로 사용한다
③ "○○를 출력하시오"라는 지시에는 값을 변수에 담는 것으로 끝내지 않고 print()로 명시적으로 출력한다
④ 시각화 문항은 그래프의 색상·제목·축 라벨까지 다듬어 완성도를 높인 뒤 다음 문항으로 넘어간다
⑤ 마지막 10분에는 새 코드를 작성하는 대신, 노트북 셀을 위에서부터 다시 실행해 오류 없이 끝까지 도는지 확인한다


Q4. (코드 빈칸 · 기본) 시험장 첫 셀

시험 시작 직후 실행할 환경 확인 코드와 표준 import 블록입니다. 빈칸 (가)~(다)를 채우십시오.

import sys
import tensorflow as tf

print('python:', sys.version.split()[0])
print('tensorflow:', tf.____(가)____)
print('keras:', tf.keras.__version__)

# --- 표준 import 블록 (딥러닝 부분) ---
from tensorflow.keras.models import ____(나)____
from tensorflow.keras.layers import Input, Dense, Dropout, BatchNormalization
from tensorflow.keras.callbacks import ____(다)____, ModelCheckpoint

print('imports ready')
  • (가): TensorFlow 버전 문자열을 담고 있는 속성 이름
  • (나): 층을 순서대로 쌓아 올리는 모델 클래스 이름
  • (다): 검증 지표가 개선되지 않으면 학습을 조기 종료하는 콜백 클래스 이름

해답 및 해설 보기

Q1 해답

정답: ② (ㄱ, ㄷ, ㅁ)

실증 코드

import tensorflow as tf

# 범위 안 주제에 쓰이는 API가 실제로 무엇인지 확인
for name in ['Dense', 'Dropout', 'BatchNormalization', 'Input']:
    print(name, name in dir(tf.keras.layers))

출력 요지: 네 줄 모두 True. 시험 범위의 딥러닝은 이 네 가지 층으로 만드는 완전연결 신경망이 전부입니다.

왜 이렇게 푸는가

Associate 실기가 다루는 데이터는 행과 열로 된 정형 데이터입니다. 정형 데이터를 처리하는 신경망은 Dense 층을 쌓은 완전연결 신경망 한 종류이고, 여기에 출력층·손실 함수 선택(ㅁ)과 과적합 대응 콜백(ㄷ)이 붙습니다. 반면 ㄴ의 CNN은 이미지, ㄹ의 Transformer 사전학습 모델은 자연어·대규모 모델 영역으로, 본문 §2의 "더 알아보기 — 시험 무관"에서 명시적으로 범위 밖으로 분류한 주제입니다.

범위를 좁히는 것 자체가 이 시험의 전략입니다. 시험에 나오는 딥러닝은 이진분류·다중분류·회귀 세 유형뿐이고, 유형에 따라 바뀌는 곳은 출력층과 손실 함수 두 곳입니다.

자주 틀리는 지점

  • "딥러닝 시험"이라는 말만 보고 CNN·RNN/LSTM 강의부터 찾는 것이 가장 흔한 시간 낭비입니다. 이 교재의 범위 표 여섯 줄(Ch02~Ch07) 밖은 시험이 끝난 뒤에 공부하십시오.
  • ㄷ(EarlyStopping)을 "고급 기법"으로 오해해 범위 밖으로 빼는 경우가 있습니다. 콜백은 Ch06의 정식 출제 범위이며, 모의고사 학습 문항에서 직접 지시되는 항목입니다.

Q2 해답

정답: ③

왜 이렇게 푸는가

이 시험의 문항은 앞 문항의 결과를 뒤 문항이 이어받는 단계형 구조입니다. 6번의 인코딩 결과 데이터프레임이 7번 분리의 입력이 되고, 그 결과가 8번 스케일링으로, 다시 10번 이후 딥러닝 문항의 입력으로 흘러갑니다. 6번을 통째로 비워 두면(②) 7번 이후가 연쇄적으로 실행 불가 상태가 되어, 배점이 큰 딥러닝 구간까지 함께 잃습니다.

채점은 문항 단위로 이루어진다고 보는 편이 안전합니다. 그러므로 "완벽한 6번 하나"보다 "다음 단계가 물려받을 수 있는 결과물을 남긴 6번"이 총점에서 유리합니다. 예컨대 pd.get_dummies 사용법이 흐릿하다면, 최소한 문자열 컬럼을 어떤 방식으로든 숫자로 바꾼 데이터프레임을 만들어 두고 넘어가는 것이 ③의 의미입니다.

자주 틀리는 지점

  • ①처럼 한 문항에 매달리는 것이 가장 큰 실점 원인입니다. 본문 §3의 시간 배분에서 딥러닝 몫을 먼저 떼어 두라고 한 이유가 여기 있습니다.
  • ⑤의 "마지막 10분에 몰아서"도 위험합니다. 마지막 10분은 새 코드를 쓰는 시간이 아니라, 셀을 위에서부터 재실행해 답안 전체가 오류 없이 도는지 확인하는 시간입니다.

Q3 해답

정답: ④ (옳지 않은 설명)

왜 이렇게 푸는가

시각화 문항은 배점 대비 시간 소모가 큰 구간입니다. 지시된 그래프를 지시된 컬럼으로 그려 화면에 출력했다면 요구는 충족된 것이고, 색상·제목을 다듬는 데 쓰는 5분은 뒤쪽 딥러닝 문항 하나를 살릴 수 있는 5분입니다. 본문 §3의 두 번째 원칙 "시각화 문항에 완성도를 쏟지 않는다"가 그대로 근거입니다.

나머지 ①·②·③·⑤는 모두 본문의 시험 포인트에 해당하는 옳은 습관입니다. 특히 ①·②는 채점 재현성과 직결됩니다. 지시문에 등장한 이름·숫자·비율은 그대로 옮겨 적는다를 원칙으로 삼으십시오. ③은 노트북 특성상 셀 마지막 줄만 자동 표시되므로, 중간 결과는 print()로 감싸지 않으면 "출력하시오"를 충족하지 못한 답안이 됩니다.

자주 틀리는 지점

  • X_train을 x_train으로 쓰는 대소문자 실수는 코드가 정상 실행되기 때문에 스스로 눈치채기 어렵습니다. 변수명을 정할 때 문항의 표기를 복사해 붙이는 습관이 안전합니다.
  • random_state를 생략하면 실행할 때마다 분리 결과가 달라져, 채점자가 제시 답안과 대조할 수 없습니다. 값이 지정되어 있다면 반드시 넣으십시오.

Q4 해답

정답 코드

import sys
import tensorflow as tf

print('python:', sys.version.split()[0])
print('tensorflow:', tf.__version__)          # (가) __version__
print('keras:', tf.keras.__version__)

# --- 표준 import 블록 (딥러닝 부분) ---
from tensorflow.keras.models import Sequential                  # (나) Sequential
from tensorflow.keras.layers import Input, Dense, Dropout, BatchNormalization
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint   # (다) EarlyStopping

print('imports ready')

실행 결과 요지: python: 3.13.5 / tensorflow: 2.21.0 / keras: 3.15.0 / imports ready. 버전 숫자는 환경마다 다르지만, TensorFlow 2.x 계열이면 이 교재의 코드가 그대로 동작합니다.

왜 이렇게 푸는가

  • (가) __version__ — 앞뒤 밑줄 두 개짜리 속성입니다. 함수가 아니므로 tf.__version__()처럼 괄호를 붙이지 않습니다. 첫 셀에서 버전을 찍어 두면, 이후 문법 관련 오류가 났을 때 "환경 버전 문제인지 내 코드 문제인지"를 빠르게 가를 수 있습니다.
  • (나) Sequential — 층을 위에서부터 순서대로 쌓아 올리는 모델 컨테이너입니다. 정형 데이터용 완전연결 신경망은 입력에서 출력까지 한 줄로 흐르므로 Sequential 하나로 충분합니다. 실제 사용법은 Ch04에서 다룹니다.
  • (다) EarlyStopping — 검증 손실이 더 이상 개선되지 않으면 학습을 중간에 멈추는 콜백입니다. ModelCheckpoint와 짝으로 자주 쓰이므로 callbacks 모듈에서 두 개를 함께 import 해 두는 것이 시험장 표준입니다.

이 import 블록을 첫 셀에 통째로 적어 두면, 뒤에서 문항마다 import 문을 찾느라 흐름이 끊기는 일을 막을 수 있습니다.

자주 틀리는 지점

  • from keras.models import Sequential처럼 tensorflow. 접두어를 빼고 쓰면 환경에 따라 다른 패키지를 참조해 오류가 나거나 동작이 달라질 수 있습니다. 이 교재는 tensorflow.keras 경로로 통일합니다.
  • Sequential은 models, Dense·Dropout은 layers, EarlyStopping은 callbacks — 모듈이 서로 다릅니다. from tensorflow.keras.layers import Sequential은 ImportError입니다.
  • Input을 빠뜨리는 경우가 많습니다. Ch04부터 입력 정의는 model.add(Input(shape=(n,)))를 표준으로 쓰므로, import 목록에 반드시 포함시키십시오.