lierre

tensorflow gan 예제

이 블로그 게시물에서 나는 생성 적대적 네트워크를 소개했다. 우리는...

02 Août

이 블로그 게시물에서 나는 생성 적대적 네트워크를 소개했다. 우리는 알고리즘의 종류가 무엇인지, 그리고 왜 요즘 그렇게 관련성이 있는지 를 배우는 것으로 시작했습니다. 다음으로 GAN을 준수하는 부품과 함께 작동하는 방법을 살펴봤습니다. 마지막으로 MNIST 데이터 집합의 합성 예제를 만드는 방법을 배운 GAN의 완전한 구현을 프로그래밍하여 이론을 연습과 연결하는 작업을 마쳤습니다. 첫째, 우리는 필요한 라이브러리를 가져 와서 tensorflow.examples.tutorials.mnist에서 MNIST 데이터 집합에서 읽습니다. 돈 위조 과정에 대한 이론적인 예를 들어 보겠습니다. 이 과정에서 우리는 두 가지 유형의 에이전트를 상상할 수 있습니다 : 범죄와 경찰. 우리가 그들의 경쟁 목표를 살펴 보자: PyTorch를 아직 다운로드 하지 않은 경우, 체크 아웃 그들의 다운로드 도우미 여기. 여기에서 TensorFlow 예제를 찾을 수도 있습니다. 마지막으로 세션을 시작하고 텐서플로우 도우미 함수의 next_batch() 메서드를 사용하여 네트워크를 학습합니다. 생성기의 생성된 샘플에서 임의의 샘플을 잡고 샘플 목록에 추가합니다.

판별기를 학습할 때 생성기 값을 일정하게 유지합니다. 발전기를 훈련할 때 판별자 상수를 유지합니다. 각자는 정적 적에 맞서 훈련해야 합니다. 예를 들어, 이렇게 하면 생성기가 학습해야 하는 그라데이션을 더 잘 읽을 수 있습니다. 텐서플로우/간에서 새로운 릴리스에 대한 알림을 원하십니까? 변형 자동 엔코더는 입력 데이터를 인코딩하는 데 추가 제약 조건을 추가하는 생성 알고리즘, 즉 숨겨진 표현이 정규화됩니다. 변형 자동 엔코더는 자동 엔코더와 같은 데이터를 압축하고 GAN과 같은 데이터를 합성할 수 있습니다. 그러나 GAN은 미세하고 세분화된 세부 사항으로 데이터를 생성하는 반면, VA에 의해 생성된 이미지는 더 흐려지는 경향이 있습니다. Deeplearning4j의 예로는 자동 엔코더와 변형 자동 엔코더가 모두 있습니다.

이제 입력을 위한 placholders를 만듭니다. real_images는 MNIST의 실제 이미지이며 z는 실제 이미지에서 100개의 임의픽셀입니다. 먼저 그것을 분류하는 차별체가 실제 이미지가 어떻게 생겼는지 알아야하므로 판별자 기능에 대한 두 번의 호출이 있고 처음 두 개는 실제 이미지를 배우고 두 번째는 가짜 이미지를 식별합니다. 동일한 변수가 두 함수에서 사용될 때 텐서플로우 계산 그래프가 모호한 신호를 얻고 값 오류를 throw하는 경향이 있기 때문에 재사용은 true로 설정됩니다. 따라서 이러한 오류를 피하기 위해 재사용 매개 변수를 True로 설정합니다. [리셋-cppn-간 텐서플로우] [코드] (잔류 생성 적대네트워크 및 변형 자동 인코더 기법을 사용하여 고해상도 이미지를 생성) [영리한] [코드] (적대적인 예제에 대한 취약점을 벤치마킹하기 위한 라이브러리) 이제 텐서플로우 레이어를 사용하여 생성기 및 판별자 네트워크를 구현할 것입니다. 우리는 다음 함수를 사용하여 생성기 네트워크를 구현 : 이 문서의 전체 코드는 다음 링크에서 사용할 수 있습니다 : https://github.com/fabulousjeong/gan-tensorflow 첫 번째 가져오기 라이브러리 : 텐서 플로우, numpy, OS, plt (결과 이미지 저장) . 그리고 가져 오기 생성기 및 판별자 클래스. 우리는 발전기와 판별기를 만들었습니다. 이제 DB(mnist 데이터 집합)를 교육해야 합니다.

다행히도 텐서플로우가 제공합니다. 나는 골빈의 github에서 코드를 언급 우리는 덜 하드웨어 집약적 인 예를 사용합니다. 이 게시물에서는 MNIST 데이터 세트를 사용하여 Tensorflow의 레이어 API를 사용하여 간단한 GAN을 사용하여 플레이할 것입니다. 이전에 는 코드에 대해 일반적으로 발생하는 두 가지 문제에 대해 설명합니다. 이 교육의 기대치는 Generator 네트워크가 이차 분포를 따르는 데이터를 생성하기 시작해야 한다는 것입니다. 이것은 다음 섹션에서 더 설명하고 더 보여 주었습니다. 매우 간단한 데이터 배포부터 시작하지만 이 방법을 쉽게 확장하여 훨씬 더 복잡한 데이터 집합에서 데이터를 생성할 수 있습니다.