vae 예제

Sem imagem cadastrada

이제 이것은 VAE 응용 프로그램의 비교적 간단한 예입니다. 그러나 가능한 것에 대해 생각해보십시오! 신경망은 음악을 구성하는 법을 배울 수 있습니다. 책, 게임 등에 대한 일러스트레이션을 자동으로 만들 수 있습니다. 약간의 창의력으로 VAEs는 멋진 프로젝트를위한 공간을 열어 줄 것입니다. 여기서 만들고 자하는 요점은 두 모듈 인코더와 디코더가 VAE의 특성이라는 것입니다(nn에서 상속되는 특성). 모듈)을 참조하십시오. 이로 인해 둘 다 VAE 모듈에 속하는 것으로 자동으로 등록됩니다. 예를 들어 VAE 인스턴스에서 parameters()를 호출할 때 PyTorch는 모든 관련 매개 변수를 반환하는 것을 알 수 있습니다. 또한 GPU에서 실행 중인 경우 cuda()에 대한 호출이 모든 (하위) 모듈의 모든 매개 변수를 GPU 메모리로 이동한다는 의미이기도 합니다. 손실 함수는 원래 입력, x 및 모델의 출력과 같은 두 개의 인수를 사용합니다. 임의 변수이기 때문에 rv_x를 호출합니다. 이 예제에서는 Keras와 Tensorflow가 TFP 레이어를 텐서를 나가는 것으로 보더라도 TFP 레이어는 실제로 배포 개체인 TFP 레이어의 핵심 마법중 일부를 보여 줍니다.

따라서 손실 함수를 모델에 주어진 데이터의 음수 로그 가능성으로 만들 수 있습니다: -rv_x.log_prob(x). 여기서는 데이터에 대한 Bernoulli 분포를 사용하여 픽셀을 이진 값으로 모델링합니다. 데이터의 유형과 도메인에 따라 다른 방식으로 모델링할 수 있습니다(예: 다시 정규 분포). TFP 계층은 Keras를 사용하여 심층 네트워크로 배포를 구성하기 위한 고급 API를 제공합니다. 이 API를 사용하면 딥 러닝과 확률형 프로그래밍을 결합한 모델을 쉽게 빌드할 수 있습니다. 예를 들어, 우리는 깊은 네트워크의 출력과 확률 분포를 매개 변수화 할 수 있습니다. 여기서는 이 방법을 사용합니다. 우리가 이미 알다시피, (E[log P(Xvert z)] 를 최대화하는 것은 최대 우도 추정입니다. 기본적으로 로지스틱 회귀, SVM 또는 선형 회귀와 같은 차별적 감독 모델에서 항상 볼 수 있습니다. 다른 말로, 입력 ( z) 및 출력 (X)주어진, 우리는 일부 모델 매개 변수에서 조건부 분포 (P(Xvert z))를 최대화하려고 합니다. 따라서 입력 (z) 및 출력 (X)이 있는 모든 분류기에서 구현한 다음 로그 손실 또는 회귀 손실을 사용하여 객관적인 함수를 최적화할 수 있습니다. 모든 데이터 집합을 실제로 사용할 수 있지만 항상 그렇듯이 MNIST를 예로 들 겠습니다.

VAE 예제에서는 생성 및 추론 네트워크에 두 개의 작은 ConvNet을 사용합니다. 이러한 신경망은 작기 때문에 tf.keras.순틱을 사용하여 코드를 단순화합니다. 다음 설명에서 각각 $x 및 $z 뷰어 변수를 나타냅니다. 우리는 텐서플로우에서 VAE를 구축하는 법을 배웠고 MNIST 숫자에 대해 학습했습니다. 다음 단계로, 예를 들어 CNN 인코더와 데코더를 사용하여 코드를 직접 실행하고 확장할 수 있습니다. 언제나처럼, 당신은 어떤 질문이있는 경우, 아래에 물어주시기 바랍니다. 그거에요! 코드를 가지고 놀려면 전체 코드 예제를 살펴보십시오. 또한 이 게시물에 생략된 플롯이 포함되어 있습니다. 다음은 레이블에 의해 색상으로 구분된 잠재 코드와 교육의 처음 몇 년 동안 이전의 디코딩된 샘플입니다. 데이터를 생성한다고 가정합니다. 이를 수행하는 가장 좋은 방법은 먼저 생성할 데이터의 종류를 결정한 다음 실제로 데이터를 생성하는 것입니다.

예를 들어, 동물을 생성하려는 경우를 예로 들 수 있습니다. 첫째, 우리는 동물을 상상 : 그것은 네 개의 다리가 있어야하며, 수영 할 수 있어야합니다. 이러한 기준을 가지고, 우리는 실제로 동물의 왕국에서 샘플링하여 동물을 생성 할 수 있습니다. 보라, 우리는 Platypus를 얻을! 이 가이드의 임무는 잠재 임의 변수에 대한 좋은 값을 `추측`하는 것입니다.