keras gan 예제

keras gan 예제

이전에는 인기 있는 MNIST 데이터 집합을 사용하여 작업했을 수도 있지만 이 문서에서는 Keras GAN을 사용하여 새로운 MNIST와 같은 이미지를 생성할 것입니다. GAN을 훈련하는 데 시간이 오래 걸릴 수 있습니다. 그러나, 이 문제는 몇 시간에 대부분의 노트북에서 실행 하기에 충분히 작은, 그것은 좋은 예. 그림 1과 같이 이미지가 실제이미지인지를 알려주는 판별체는 기본적으로 CNN(심층적인 컨볼루션 신경망)입니다. MNIST 데이터 집합의 경우 입력은 이미지입니다(28픽셀 x 28픽셀 x 1채널). sigmoid 출력은 이미지가 실제 얼마나 의 확률의 스칼라 값입니다 (0.0은 확실히 가짜, 1.0은 확실히 진짜, 그 사이에 아무것도 회색 영역입니다). 일반적인 CNN의 차이점은 레이어 간에 최대 풀링이 없다는 점입니다. 대신 다운샘플링에 보폭이 있는 컨볼루션이 사용됩니다. 각 CNN 계층에 사용되는 활성화 함수는 새는 ReLU입니다.

레이어 간에 0.4에서 0.7 사이의 드롭아웃은 피팅과 암기와 오버를 방지합니다. 목록 1은 Keras의 구현을 보여줍니다. 이 경우, 우리는 판별자가 실제 예제에 대해 상대적으로 혼란스럽고 가짜 예제를 식별하는 성능이 다르다는 것을 알 수 있습니다. 아래 예제에서는 판별자 모델에서 컨볼루션 레이어 후 기본 경사가 0.2인 LeakyReLU를 사용하는 것을 보여 줍니다. 예제를 실행하면 잠재 공간에서 100개의 임의 의 포인트가 생성되고 이를 생성기의 입력으로 사용하고 1차원 함수 도메인에서 100개의 가짜 샘플을 생성합니다. 예제를 실행하면 먼저 복합 모델에 대한 요약이 만들어집니다. MNIST 데이터 집합은 60,000개의 손으로 그린 숫자로 구성되어 있으며, 0에서 9까지입니다. Keras는 50,000개의 교육 이미지와 10,000개의 테스트 이미지로 분할하는 내장 로더를 제공합니다. 다음 코드를 사용하여 데이터 집합을 로드합니다: 아래 예제에서는 `보폭` 인수를 (2,2)로 설정하여 다운샘플링 보폭 컨볼루션을 사용하는 단일 숨겨진 컨볼루션 레이어를 사용하여 이를 보여 줍니다. 효과는 모델이 입력을 64×64에서 32×32로 다운샘플링하는 것입니다. 예제를 실행하면 부드러운 값에 대한 최소 값과 최대 값이 예상값에 가깝다는 것을 보여 줍니다.

판별기를 학습할 때 생성기 값을 일정하게 유지합니다. 발전기를 훈련할 때 판별자 상수를 유지합니다. 각자는 정적 적에 맞서 훈련해야 합니다. 예를 들어, 이렇게 하면 생성기가 학습해야 하는 그라데이션을 더 잘 읽을 수 있습니다. 이 자습서에서 GAN을 작성하고 학습하는 데 필요한 전체 코드를 보여 주어 있습니다. 다음 단계로 Kaggle에서 사용할 수 있는 대규모 명사 얼굴 속성(CelebA) 데이터 집합과 같은 다른 데이터 집합을 실험해 볼 수 있습니다. 간(GAN)에 대해 자세히 알아보려면 NIPS 2016 자습서: 생성 적대 네트워크(생성 적대 네트워크)를 권장합니다. 목록 4. 그림 3에서 예시된 것처럼 적대적인 모델은 Keras에서 구현되었습니다.

컴퓨터 비전에 관심이 있다면 Keras와 함께 콘텐츠 기반 이미지 검색에 대한 기사를 했습니다. 다음은 생성 적대 네트워크에 대한 리소스 목록입니다. 아래 예제에서는 로드된 이미지 데이터의 NumPy 배열을 필요한 범위 [-1,1]로 적절하게 확장하는 함수를 제공합니다. 적대모델은 그림 3과 같이 함께 쌓인 생성기-판별기일 뿐입니다. 생성기 부분은 차별과 동시에 피드백에서 학습을 속이려고합니다. 목록 4는 Keras 코드를 사용한 구현을 보여 주며, 이에 대한 구현을 보여줍니다. 학습 매개 변수는 학습 률 감소 및 해당 체중 감소를 제외하고 판별기 모델과 동일합니다.