gh_mirrors/gen/generative-models 확장성 설계: 새로운 생성 모델 변종 추가 방법

프로젝트 디렉터리 구조 규칙

프로젝트는 "모델 유형/변종 구현"의 2단계 디렉터리 구조를 채택합니다. 모든 GAN 변종은 `GAN/` 디렉터리에 통합되며, Conditional GAN은 `GAN/conditional_gan/`에 위치합니다. 새 모델은 다음과 같은 명명 규칙을 따라야 합니다.

  • PyTorch 구현: [변종명]_pytorch.py (예: gan_pytorch.py)
  • TensorFlow 구현: [변종명]_tensorflow.py (예: gan_tensorflow.py)

핵심 구성 요소 재사용

파라미터 초기화

모든 모델은 Xavier 초기화 함수를 공통으로 사용하며, 각 구현 파일 상단에 정의됩니다.


def xavier_init(size):
    in_dim = size[0]
    xavier_stddev = 1. / tf.sqrt(in_dim / 2.)
    return tf.random_normal(shape=size, stddev=xavier_stddev)

이 함수는 gan_tensorflow.pycgan_pytorch.py 등에서 모두 구현되어 있으며, 새 모델은 이 패턴을 그대로 재사용해야 합니다.

네트워크 아키텍처 템플릿

GAN 계열 모델

생성자(generator/G)와 판별자(discriminator/D)라는 두 가지 핵심 메서드를 구현해야 합니다.

  • 생성자: 랜덤 노이즈 z를 입력받아 합성 데이터를 출력합니다. (예: gan_tensorflow.pygenerator 함수)
  • 판별자: 실제 데이터와 생성된 데이터를 구분하여 확률 값을 출력합니다. (예: lsgan_tensorflow.pydiscriminator 함수)
VAE 계열 모델

세 가지 주요 구성 요소를 구현해야 합니다.

  • 인코더 Q: 입력을 잠재 공간 분포로 매핑합니다. (참조: vae_pytorch.pyQ 함수)
  • 디코더 P: 잠재 변수에서 입력을 재구성합니다. (참조: vae_pytorch.pyP 함수)
  • 재파라미터화 샘플링: sample_z(mu, log_var) (모든 VAE 변종에서 공통 구현)

새 모델 구현 단계

1. 디렉터리 및 파일 생성

"Improved GAN"을 예로 들어 설명합니다.


mkdir -p GAN/improved_gan
touch GAN/improved_gan/improved_gan_pytorch.py
touch GAN/improved_gan/improved_gan_tensorflow.py

2. 핵심 로직 구현

PyTorch 버전을 예시로, 다음 구성 요소를 포함해야 합니다.


def xavier_init(size):  # 파라미터 초기화
    # 표준 구현 재사용

class Generator(nn.Module):  # 생성자 네트워크
    def __init__(self):
        super(Generator, self).__init__()
        # 네트워크 레이어 정의 (gan_pytorch.py의 G 함수 참조)

class Discriminator(nn.Module):  # 판별자 네트워크
    def __init__(self):
        super(Discriminator, self).__init__()
        # 네트워크 레이어 정의 (gan_pytorch.py의 D 함수 참조)

def reset_grad():  # 그래디언트 초기화 (모든 PyTorch 구현에서 공통)
    # gan_pytorch.py의 구현 재사용

3. 차별화된 구현

조건부 생성 모델의 경우, 생성자와 판별자에 조건 입력을 추가해야 합니다. 예를 들어 conditional_gan/cgan_pytorch.py에서 볼 수 있듯이:


def G(z, c):  # 조건부 생성자
    inputs = torch.cat([z, c], 1)
    h = F.relu(torch.matmul(inputs, Wzh) + bzh)
    X = F.sigmoid(torch.matmul(h, Whx) + bhx)
    return X

테스트 및 검증

새 모델은 유닛 테스트를 추가해야 하며, tests/test_vae.py의 테스트 구조를 참고하여 최소한 다음을 포함해야 합니다.

  • 네트워크 출력 차원 검사
  • 그래디언트 계산 정확성
  • 생성된 샘플 품질 평가

프로젝트 참고 자료

  • 공식 문서: README.md
  • 환경 설정: environment.yml
  • GAN 기본 구현: GAN/vanilla_gan/
  • VAE 기본 구현: VAE/vanilla_vae/

위의 규칙을 따르면 새 모델 변종이 기존 아키텍처에 원활하게 통합되어 코드 일관성과 유지보수성을 유지할 수 있습니다. 개발 속도를 높이려면 유사한 모델 구현(예: infogan_pytorch.py의 다중 조건 제어)을 우선 참조하는 것이 좋습니다.

태그: GAN VAE PyTorch TensorFlow 생성 모델

5월 27일 19:37에 게시됨