Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/ko/tutorials/quickstart/beginner.ipynb
25118 views
Kernel: Python 3
#@title Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.

텐서플로 2.0 시작하기: 초보자용

이 짧은 소개 글은 Keras를 사용하여 다음을 수행합니다.

  1. 사전에 빌드한 데이터세트를 로드합니다.

  2. 이미지를 분류하는 신경망 머신 러닝 모델을 빌드합니다.

  3. 이 신경망을 훈련합니다.

  4. 모델의 정확도를 평가합니다.

이 문서는 구글 코랩(Colaboratory) 노트북 파일입니다. 파이썬 프로그램을 브라우저에서 직접 실행할 수 있기 때문에 텐서플로를 배우고 사용하기 좋은 도구입니다:

  1. 파이썬 런타임(runtime)에 연결하세요: 메뉴 막대의 오른쪽 상단에서 CONNECT를 선택하세요.

  2. 노트북의 모든 코드를 실행하려면 Runtime(런타임) > **Run all(모두 실행)**을 선택합니다. 코드 셀을 한 번에 하나씩 실행하려면 각 셀 위로 마우스를 이동하고 Run cell(셀 실행) 아이콘을 선택합니다.

셀 실행 아이콘

TensorFlow 설정하기

시작하려면 TensorFlow를 프로그램으로 가져옵니다.

import tensorflow as tf print("TensorFlow version:", tf.__version__)

MNIST 데이터셋을 로드하여 준비합니다. 샘플 값을 정수에서 부동소수로 변환합니다:

참고: 자체 개발 환경을 사용하는 경우에 TensorFlow 2 패키지를 설치하려면 최신 pip로 업그레이드했는지 확인합니다. 자세한 내용은 설치 가이드를 참조합니다.

데이터세트 로드하기

MNIST 데이터세트를 로드하고 준비합니다. 이미지의 픽셀 값 범위는 0~255입니다. 이때 값을 255.0으로 나누어 0~1 범위로 조정합니다. 그러면 샘플 데이터를 정수에서 부동 소수점 숫자로 변환합니다.

mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0

머신 러닝 모델 빌드하기

tf.keras.Sequential 모델을 빌드합니다.

model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Sequential은 각 레이어에 하나의 입력 텐서와 하나의 출력 텐서가 있는 레이어를 쌓는 데 유용합니다. 레이어는 다시 사용할 수 있고 훈련 가능한 변수를 포함하며 일반적인 수학적 구조를 가진 함수입니다. 대부분의 TensorFlow 모델은 레이어로 구성되어 있습니다. 이 모델은 Flatten, Dense, Dropout 레이어를 사용합니다.

각 예시에서 모델은 각 클래스에 대해 하나씩, logits 또는 log-odds 스코어 벡터를 반환합니다.

predictions = model(x_train[:1]).numpy() predictions

tf.nn.softmax 함수는 다음과 같이 이러한 로짓을 각 클래스에 대한 확률로 변환합니다.

tf.nn.softmax(predictions).numpy()

참고: tf.nn.softmax 함수를 네트워크의 마지막 레이어에 대한 활성화 함수로 베이킹할 수 있습니다. 이렇게 하면 모델 출력을 더 직접적으로 해석할 수 있지만 이 접근법은 소프트맥스 출력을 사용할 경우 모든 모델에 대해 정확하고 수치적으로 안정적인 손실 계산을 제공하는 것이 불가능하므로 권장하지 않습니다.

losses.SparseCategoricalCrossentropy를 사용하여 훈련용 손실 함수를 정의합니다.

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

손실 함수는 실측 값의 벡터와 로짓의 벡터를 취하고 각 예시에 대한 스칼라 손실을 반환합니다. 이 손실은 참(true) 클래스의 음의 로그 확률과 같습니다. 모델이 올바른 클래스를 확신하는 경우 손실은 0입니다.

이 훈련되지 않은 모델은 무작위에 가까운 확률(각 클래스에 대해 1/10)을 제공하므로 초기 손실은 -tf.math.log(1/10) ~= 2.3에 근접해야 합니다.

loss_fn(y_train[:1], predictions).numpy()

훈련을 시작하기 전에 Keras Model.compile을 사용하여 모델을 구성하고 컴파일합니다. optimizer 클래스를 adam으로 설정하고 loss를 앞에서 정의한 loss_fn 함수로 설정합니다. metrics 매개변수를 accuracy로 설정하여 모델에 대해 평가할 메트릭을 지정합니다.

model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy'])

모델 훈련 및 평가하기

모델을 훈련하고 평가합니다:

model.fit(x_train, y_train, epochs=5)

Model.evaluate 메서드는 일반적으로 검증 세트 또는 테스트 세트에서 모델의 성능을 확인합니다.

model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test, verbose=2)

훈련된 이미지 분류기는 이 데이터셋에서 약 98%의 정확도를 달성합니다. 더 자세한 내용은 TensorFlow 튜토리얼을 참고하세요.

모델이 확률을 반환하도록 하려면 다음과 같이 훈련된 모델을 래핑하고 여기에 소프트맥스를 첨부할 수 있습니다.

probability_model = tf.keras.Sequential([ model, tf.keras.layers.Softmax() ])
probability_model(x_test[:5])

결론

축하합니다! Keras API를 사용하는 사전에 빌드한 데이터세트를 사용하여 머신 러닝 모델을 훈련했습니다.

Keras를 사용하는 더 많은 예시는 튜토리얼을 확인하세요. Keras로 모델을 빌드하는 방법에 대해 자세히 알아보려면 가이드를 읽어보세요. 데이터 로드 및 준비에 대해 자세히 알아보려면 이미지 데이터 로드 또는 CSV 데이터 로드에 대한 튜토리얼을 참조하세요.