에서 보기 TensorFlow.org 실행에서 Google Colab View 소스에 GitHub 노트북 다운로드

이 튜토리얼을 보여 줍 교육 간단한 나선형의 신경 네트워크(CNN)을 분류하 CIFAR 이미지입니다. 이 튜토리얼은 Keras 순차 API 를 사용하기 때문에 모델을 만들고 훈련하는 데는 몇 줄의 코드 만 필요합니다.,

가져오기 TensorFlow

import tensorflow as tffrom tensorflow.keras import datasets, layers, modelsimport matplotlib.pyplot as plt

다운로드를 준비 CIFAR10 데이터 집

CIFAR10 데이터 집합이 포함 60,000 컬러 이미지에서 10 클래스 6,000 이미지로서 각 클래스입니다. 데이터 세트는 50,000 개의 교육 이미지와 10,000 개의 테스트 이미지로 나뉩니다. 클래스는 상호 배타적이며 그들 사이에 겹침이 없습니다.

Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz170500096/170498071 - 11s 0us/step

데이터를 확인합니다

는지 확인하는 데이터셋을 올바르게 그 첫 번째 25 이미지를 교육에서 설정하고 표시합니스 클래스 이름은 아래 각각의 이미지입니다.,

만들기 나선형 기본

6 라인의 코드는 아래 정의하는 나선형 기본을 사용하여 일반적인 패턴의 스택 Conv2D 및 MaxPooling2D 층이 있습니다.

입력으로,CNN 소 tensors 의 모양(image_height,image_width,color_channels),을 무시하고 배치 크기입니다. 이러한 차원을 처음 사용하는 경우 color_channels 는(R,G,B)를 나타냅니다. 이 예에서는 CIFAR 이미지의 형식 인 모양(32,32,3)의 입력을 처리하도록 CNN 을 구성합니다. 첫 번째 레이어에input_shape인수를 전달하여이 작업을 수행 할 수 있습니다.,

지금까지 우리 모델의 아키텍처를 표시합시다.

model.summary()

위에,당신은 당신이 볼 수 있는 출력의 모든 Conv2D 및 MaxPooling2D 층 3D 텐서의 모양이(height,width,채널). 너비와 높이 치수는 네트워크에서 더 깊어 질수록 줄어드는 경향이 있습니다. 각 Conv2D 계층의 출력 채널 수는 첫 번째 인수(예:32 또는 64)에 의해 제어됩니다. 일반적으로 폭과 높이가 줄어들면서 각 Conv2D 레이어에 더 많은 출력 채널을 추가 할 여유가 있습니다(계산적으로).,

추가 짙은 층에 위

을 완료하는 우리의 모델은,당신은 피드의 마지막 출력 텐서에 나선형 기본(의 모양(4,4,64))으로 하나 이상의 짙은 층을 수행하는 분류합니다. 밀도가 높은 레이어는 벡터를 입력(1D)으로,현재 출력은 3 차원 텐서입니다. 먼저 3D 출력을 1d 로 평평하게(또는 풀다)한 다음 위에 하나 이상의 밀도가 높은 레이어를 추가합니다. CIFAR 에는 10 개의 출력 클래스가 있으므로 10 개의 출력이있는 최종 고밀도 레이어를 사용합니다.

model.add(layers.Flatten())model.add(layers.Dense(64, activation='relu'))model.add(layers.Dense(10))

다음은 모델의 전체 아키텍처입니다.,

model.summary()

당신이 볼 수 있듯이,우리의(4,4,64)출력이었으로 평평 벡터의 모양(1024)을 진행하기 전에 두 가지 조밀 레이어입니다.

컴파일 및 기차 모형

모델을 평가

313/313 - 1s - loss: 0.8840 - accuracy: 0.7157

print(test_acc)