위의 코드에서 `steps_per_epoch`에는 training_set 폴더에 포함된 이미지 수와 같은 학습 이미지가 포함됩니다. 컨볼루션 레이어에 의해 추출되고 풀링 레이어에 의해 다운샘플링된 피처에 대한 분류를 수행하는 조밀한(완전히 연결된) 레이어입니다. 조밀한 계층에서 계층의 모든 노드는 이전 계층의 모든 노드에 연결됩니다. 필터 인수는 적용할 필터 수(여기, 32)를 지정하고 kernel_size는 필터의 크기를 [높이, 너비] (여기, [5, 5])로 지정합니다. 다음으로 모델에 대한 추정기(고급 모델 학습, 평가 및 추론을 수행하기 위한 TensorFlow 클래스)를 만들어 보겠습니다. main() : 이 Keras 자습서의 전체 코드는 여기에서 찾을 수 있습니다. 이 게시물을 읽은 후 더 많은 케라스 의 멋을 확인하려는 경우, 내 케라스 LSTM 튜토리얼 또는 내 케라스 강화 학습 튜토리얼을 살펴. 또한 PyTorch 라이브러리에 관심이 있다면 PyTorch의 컨볼루션 신경망에 대한 자습서를 확인하십시오. MNIST CNN 모델 함수를 코딩했습니다.

이제 우리는 훈련하고 평가할 준비가 되었습니다. 대상 변수를 `핫 인코딩`해야 합니다. 즉, 각 출력 범주에 대해 열이 만들어지고 각 범주에 대해 이진 변수가 입력됩니다. 예를 들어 데이터 집합의 첫 번째 이미지가 5임을 알았습니다. 즉, 배열의 여섯 번째 숫자는 1이고 나머지 배열은 0으로 채워집니다. 자습서를 통해 작업할 때 컨볼루션 신경망을 구성, 학습 및 평가하는 코드를 추가합니다. 전체 최종 코드는 여기에서 찾을 수 있습니다. 위의 코드 함수를 함수별로 세분화해 보겠습니다. 우리는 이미 우리의 신경망이 될 것입니다 방법에 대한 아이디어를 가지고 개체를했다 (순차), 우리는 "Conv2D"기능을 사용하여 컨볼루션 레이어를 추가했습니다.

Conv2D 함수는 4 인수를 취하고, 첫 번째는 필터의 수 즉, 32 여기, 두 번째 인수는 각 필터가 될 것입니다 모양 즉 3x3 여기에, 세 번째는 입력 모양과 이미지의 유형 (RGB 또는 흑백) 각 이미지 즉 입력 이미지 우리의 CNN은 64x64 해상도의 복용 될 것입니다 그리고 "3" RGB에 대 한 의미, 색상 img는, 네 번째 인수는 우리가 사용 하 고 싶은 활성화 기능, 여기 `relu` 정류 기능에 대 한 의미. 학습 및 평가 모두에서 모델의 예측이 대상 클래스와 얼마나 밀접하게 일치하는지를 측정하는 손실 함수를 정의해야 합니다. MNIST와 같은 다중 클래스 분류 문제의 경우 교차 엔트로피는 일반적으로 손실 메트릭으로 사용됩니다. 다음 코드는 모델이 TRAIN 또는 EVAL 모드에서 실행될 때 교차 엔트로피를 계산합니다: 위의 코드가 상속하는 콜백 슈퍼 클래스에는 on_train_begin, on_epoch_end와 같은 콜백 정의에서 재정의할 수 있는 여러 메서드가 있습니다. 을 참조하십시오. 이러한 방법의 이름은 상당히 자명하고, 우리가 "물건을 할"수있는 교육 과정에서 순간을 나타냅니다. 위의 코드에서 교육 시작 시 자체.acc = [] 목록을 초기화하여 정확도 결과를 저장합니다. on_epoch_end() 메서드를 사용하여 학습 중에 손실 및 정확도를 기본값으로 보유하는 사전인 로그에서 원하는 변수를 추출할 수 있습니다. 그런 다음 이 콜백을 인스턴스화합니다: 위의 코드의 대부분의 문은 사소한 것이고, 코드의 일부 줄을 설명합니다. CNN은 4차원 벡터만 허용하므로 x_train 및 x_test의 모양을 변경합니다. 값 60000은 학습 데이터의 이미지 수를 나타내고, 28은 이미지 크기를 나타내고 1은 채널 수를 나타낸다. 이미지가 회색조이고 이미지가 RGB 형식인 경우 채널 수가 1로 설정됩니다.