pytorch에서forward의 용법과 해석 설명

2973 단어 pytorchforward

앞말


최근pytorch를 사용할 때 모형 훈련을 할 때forward를 사용할 필요가 없습니다. 하나의 대상에 대응하는 매개 변수를 실례화하면 forward 함수를 자동으로 호출할 수 있습니다
즉,

forward의 사용


class Module(nn.Module):
 def __init__(self):
  super(Module, self).__init__()
  # ......
  
 def forward(self, x):
  # ......
  return x
data = ..... # 
#  
module = Module()
#  
module(data) 
#  
# module.forward(data) 
실제로

module(data) 
... 과 같다

module.forward(data) 

forward 사용 설명


등가의 원인은pythoncalss의 __call__및 __init__방법

class A():
 def __call__(self):
  print('i can be called like a function')
 
a = A()
a()
out:
i can be called like a function
__call__안에서 다른 함수를 호출하다

class A():
 def __call__(self, param):
  
  print('i can called like a function')
  print(' :{}  : {}'.format(type(param), param))
 
  res = self.forward(param)
  return res
 
 def forward(self, input_):
  print('forward  ')
 
  print('in forward,  :{}  : {}'.format( type(input_), input_))
  return input_ 
a = A() 
input_param = a('i')
print(" a :", input_param)
out:
i can called like a function
전송된 매개 변수의 형식은: 값은: i
forward 함수가 호출되었습니다.
in forward, 전송 매개 변수 형식은: 값은: i
대상 a가 전송하는 매개 변수는: i
추가: Pytorch 모델에서 nn.모델의 forward() 전방향 전파 불호출 설명
pytorch에서 호출된 모델의 forward () 전방향 전파가 없고 실렬화된 후에 파라미터를 전송합니다.

모델 정의


class Module(nn.Module):
 def __init__(self):
  super(Module, self).__init__()
  # ......
 
 def forward(self, x):
  # ......
  return x
data = ..... # 
#  
module = Module()
#    
module(data) 
# module.forward(data) 
실제로module(data)는module와 같다.forward(data)
등가의 원인은pythoncalss의 __call__ 클래스를 함수처럼 호출할 수 있습니다
모델 (x) 을 실행할 때, 밑바닥에서 자동으로 forward 방법을 호출하여 결과를 계산합니다

class A():
 def __call__(self):
  print('i can be called like a function')
 
a = A()
a()
>>>i can be called like a function
__call__ 에서 다른 함수를 호출할 수 있습니다

class A():
 def __call__(self, param):
  
  print(' __call__ , ',param)
 
  res = self.forward(param)
  return res
 
 def forward(self, x):
  print(' forward , : ',x)
  return x
 
a = A()
y = a('i')
 >>>  __call__ ,  i
 >>> forward , : i
print(" :", y)
 >>> : i
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.

좋은 웹페이지 즐겨찾기