ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Pytorch 함수2
    CS 공부/AI 2023. 3. 15. 18:03
    hook
    패키지화된 코드에서 다른 프로그래머가 custom 코드를 중간에 실행시킬 수 있도록 만들어놓은 인터페이스
    -프로그램의 실행 로직을 분석하거나
    - 프로그램에 추가적인 기능을 제공하고 싶을 때
    module에 적용하는 hook
    - forward hook, backward hook
    - register_forward_pre_hook, register_forward_hook, register_backward_hook, register_full_backward_hook
    tensor에 적용하는 hook
    - backward hook만 있음
    - register_hook

     

    TORCH.TENSOR.REGISTER_HOOK
    backward hook 을 등록
    hook는 Tensor에 대한 기울기가 계산될 때마다 호출됨

     

    register_forward_pre_ hook
    모듈에 정방향 사전 후크를 등록
    forward()가 호출되기 전에 후크가 매번 호출됨

     

    register_hook (tensor에서만 가능)
    Tensor의 경우에는 backward hooka만 가능
    (Tensor의 gradient가 계산될 때마다 hook 호출됨. hook은 gradient를 바꿀 수는 없지만 새로운 gradient를 생성 가능하며, 기존 grad 대신 사용 가능함.)

    그냥 model 함수 자체에서는 불가능
    model.(변수명).register_hook(hook) 해야함

     

    register_parameter
    모듈에 매개변수를 추가합니다.
    register_parameter(이름,매개변수)

     

    apply
    custom 함수를 모델에 적용하고 싶을 때 모델에 속하는 모든 module에 일일이 함수를 적용해야할까? NOPE!
    - 모델의 모든 module들을 순차적으로 입력받아서 처리
    - 일반적으로 가중치 초기화(Weight Initialization)에 많이 사용됨
    - Postorder Traversal 방식으로 module들에 함수를 적용
    - 입력: 모듈 단위

    ex1)

    model = Model()
    
    #apply를 이용해 모든 Parameter 값을 1로 만들기
    def weight_initialization(module):
        module_name = module.__class__.__name__
        if module_name.split('_')[0]=='Function':
          module.W=torch.nn.Parameter(torch.tensor([1.]),requires_grad=True)
    
    
    # apply는 apply가 적용된 module을 return 
    returned_module = model.apply(weight_initialization)

     

     

    setattr()
    setattr(object, name, value)
    object에 존재하는 속성의 값을 바꾸거나, 새로운 속성을 생성하여 값을 부여

     

    partial
     

    031 기존 함수로 새로운 함수를 만들려면? ― functools.partial

    functools.partial()은 하나 이상의 인수가 이미 채워진 새 버전의 함수를 만들 때 사용하는 함수이다. ## 문제 다음은 입력한 인수의 합과 곱을 choice값에…

    wikidocs.net

     

     

     

    'CS 공부 > AI' 카테고리의 다른 글

    DataLoader  (0) 2023.03.16
    Dataset  (0) 2023.03.15
    torch 함수  (1) 2023.03.14
    파이썬 AI 개발 환경 준비  (0) 2023.03.02
    AI 프로그래밍  (0) 2023.01.12
Designed by Tistory.