[부스트캠프 AI tech Pytorch Basic] week02 과제정리

redgreen·2022년 1월 25일
0
post-thumbnail

링크: colab

function

torch.gather()

torch.einsum()

torch.nn

torch.nn.Module(doc)

torch.nn.Sequential(doc)

torch.nn.ModuleList(doc)

  • python의 list를 사용할 경우?
    - ModuleList를 사용할 경우만 parameter가 register 된다. (참고)

torch.nn.ModuleDict(doc)

buffer(doc)

  • 일반 tensor는 모델에 저장되지 않는다.
  • 모델에 paramete 외 일반 tensor를 저장하기 위해 self.register_buffer(이름, torch.tensor)의 형태로 저장할 수 있다.
  • self.register_buffer(이름, tensor)로 저장하면 self.이름으로 tensor를 불러올 수 있다.
  • BatchNorm에서 사용되는 듯

모델구조

model.named_modules(): 모델의 구조(모든 submodule)를 가져온다.
model.named_children(): 자식submodule만 가져온다.
model.get_submodule(name): model.named_...를 사용하여 module의 이름을 확인하고 가져올 수 있다.
model.named_parameters(): parameter와 이름, 속하는 module을 확인
model.get_parameter(): 지정한 parameter를 불러온다
model.named_buffers(), model.buffers(): buffer 목록을 불러온다.
model.get_buffer(): buffer를 가져온다
model.__doc__: 모델의 Docstring

모델 출력

  • print(repr(model))
출력
Model(
  (ab): Layer_AB(
    (a): Function_A()
    (b): Function_B()
  )
  (cd): Layer_CD(
    (c): Function_C()
    (d): Function_D()
  )
)
  • 모델 내에서 overriding
def extra_repr(self):
	return f"name={self.name}"
  • 전: Function_A()
  • 후: Function_A(name=duck)

hook

  • TensorModule에 적용할 수 있음
  • tensor에서는 _backward_hooks만 가능
  • tensor.register_hook(func)
    확인 --> tensor.backward_hooks
  • Module에는 여러 hook이 존재
    • model.register_foward_pre_hook(hook)
    • model.register_forward_hook(hook)
    • model.register_full_backward_hook(hook)
    • model.register_backward_hook(hook)?
      한번에 확인 --> model.__dict__

apply

  • 가중치 초기화에 많이 사용됨
  • Postorder Traversal(후위 순회)방식으로 module에 함수를 적용[left_child->right_child->parent]

  • torch.tensor 값 바꾸는 법
    torch.tensor(x, requires_grad=True).data.fill_()

  • 외부에서 만든 메소드로 변경하는 법(stack overflow)
>> from functools import partial
>> class Dog:
        def __init__(self, name):
            self.name = name
>> def bark(self):                 
        print('Woof! %s is barking' % self.name)
>> e.bark = partial(bark, e)
profile
인공지능 꿈나무

0개의 댓글