mnist 데이터 예제

mnist 데이터 예제

Uncategorized -

R에서 효율적인 수치 컴퓨팅을 수행하려면 일반적으로 다른 언어로 구현된 매우 효율적인 코드를 사용하여 R 외부의 행렬 곱셈과 같은 값비싼 작업을 수행하는 기본 R 함수를 호출합니다. 안타깝게도 모든 작업에 대해 R로 다시 전환할 때 많은 오버헤드가 있을 수 있습니다. 이 오버헤드는 GPU또는 분산 방식으로 계산을 실행하려는 경우 특히 나쁩니다. 임의 데이터의 작은 배치를 사용하여 -이 경우, 경위 그라데이션 하강 -이 경우, 검색 교육이라고합니다. 이상적으로는 모든 교육 단계에 모든 데이터를 사용하는 것이 우리가 해야 할 일을 더 잘 이해할 수 있기 때문에 비용이 많이 듭니다. 대신 매번 다른 하위 집합을 사용합니다. 이렇게하면 저렴하고 동일한 이점이 많이 있습니다. correct_prediction은 부울의 벡터입니다. 어떤 분수가 올바른지 확인하기 위해 부동 소수점 번호로 캐스팅한 다음 평균을 취합니다. 예를 들어 (TRUE, FALSE, TRUE, TRUE)는 0.75가 되는 (1.0, 0.0, 1.0, 1.0)가 됩니다.

MNIST 필기 숫자 데이터 집합의 5000개 샘플. read_data_set() 함수는 이러한 세 가지 데이터 집합 각각에 대해 DataSet 인스턴스가 있는 사전을 반환합니다. DataSet.next_batch() 메서드는 batch_size 이미지 목록과 레이블로 구성된 튜플을 사용하여 실행 중인 TensorFlow 세션에 공급할 수 있습니다. 일반적으로 수렴될 때까지 학습을 실행하므로 열차 데이터에서 모델 매개 변수(가중치 + 바이어스)의 양호한 집합을 배웠습니다. 이 자습서의 목적을 위해, 우리는 10 시대에 대 한 훈련을 실행 하 고 중지 합니다. 시대는 전체 열차 데이터를 통해 하나의 전체 패스입니다. 2011년에, 0.27%의 오류율은, 이전 최고 결과에 향상, 신경망의 유사한 시스템을 사용하여 연구원에 의해 보고되었습니다. [13] 2013년 DropConnect를 사용한 신경망의 정규화를 기반으로 한 접근 방식은 0.21%의 오차율을 달성했다고 주장되었습니다. [14] 최근 단일 컨볼루션 신경망 최고 성능은 0.31%의 오류율이었습니다. [15] 2018년 8월 현재 실시간 데이터 보강을 사용하여 MNIST 학습 데이터에 대해 학습된 단일 컨볼루션 신경망의 성능이 0.26%입니다.

[16] 또한, 병렬 컴퓨팅 센터 (Khmelnitskiy, 우크라이나)는 0.21 %의 오류율로 MNIST에서 수행하는 5 개의 컨볼루션 신경망의 앙상블을 얻었습니다. [17] [18] 테스트 데이터 집합의 잘못된 레이블을 잘못 지정하면 테스트 오류율 0%에 도달하지 못할 수 있습니다. [16] 이미지 데이터는 [이미지 인덱스, 픽셀 인덱스]의 2d 텐서로 추출되며, 각 항목은 특정 이미지의 특정 픽셀의 강도 값이며 [0, 255]에서 [-0.5, 0.5]로 재조정됩니다. “이미지 인덱스”는 데이터 집합의 이미지에 해당하며 데이터 집합의 크기까지 0에서 계산됩니다. 그리고 “픽셀 인덱스”는 이미지의 픽셀 수0에 이르기까지 해당 이미지의 특정 픽셀에 해당합니다. 또한 각 이미지에 대한 레이블이 포함되어 있어 어떤 숫자인지 알려줍니다. 예를 들어 위의 이미지의 레이블은 5, 0, 4 및 1입니다. 데이터 이터레이터와 신경망이 모두 정의되었으므로 이제 교육을 시작할 수 있습니다. 여기서는 미리 정의된 네트워크에서 교육 및 추론을 실행하기 위한 높은 수준의 추상화를 제공하는 MXNet의 모듈 기능을 사용합니다. 모듈 API를 사용하면 교육 진행 방법을 제어하는 적절한 매개 변수를 지정할 수 있습니다. 컨볼루션 레이어는 데이터 집합의 이미지에서 피처를 추출하는 첫 번째 레이어입니다. 픽셀은 인접 픽셀과 가까운 픽셀만 관련이 있기 때문에 컨볼루션을 통해 이미지의 여러 부분 간의 관계를 유지할 수 있습니다.

컨볼루션은 기본적으로 픽셀 간의 관계를 잃어도 이미지의 크기를 줄이기 위해 더 작은 픽셀 필터로 이미지를 필터링합니다.