위 이미지에서 IN(x) 가 tensor x 에 대한 InstanceNorm 연산을 의미합니다. InstanceNorm 연산이 gamma 와 beta 라는 parameter 를 가지고 있음을 기억해 주시면 도움이 됩니다.
IN -> PostScale 은 다음과 같이 표현 가능합니다 (scale 상수=a).
IN(x) X a = gamma X a ((x - mu) / sigma) + beta X a
즉 gamma -> gamma X a, beta -> beta X a 로 수정하면 PostScale 연산을 한 결과를 얻을 수 있습니다. 다시 말해 IN(x) X a = IN'(x) 로 표현 가능한 것이죠 (IN'(x) 는 IN 의 파라미터인 gamma, beta 에 a 가 곱해진 IN 연산). 여기서 변환 후 IN' 이 여전히 InstanceNorm 연산의 형태를 가지고 있기 때문에, fusion 되었다고 할 수 있습니다.
PreScale -> IN 의 경우는 전개를 해보면 InstanceNorm 형태로 표현이 불가능합니다. 한번 시도해보겠습니다 (scale 상수=a).
IN(ax) = gamma X ((ax - mu') / sigma') + Beta
mu' 은 ax 의 평균, sigma' 은 ax 의 표준편차 + epsilon.
mu' (ax 의 평균) = a X mu 로 표현 됩니다.
sigma' (ax 의 표준편차 + epsilon) = root((a X 표준편차)^2 + epsilon) 로 표현됩니다.
여기서 sigma' 에 포함된 epsilon 때문에 sigma' 을 sigma 로 표현할 수 없어서 IN(ax) 를 InstanceNorm 의 형태로 변환할 수 없습니다. 따라서 fusion 이 불가능합니다.
위 이미지에서 IN(x) 가 tensor x 에 대한 InstanceNorm 연산을 의미합니다. InstanceNorm 연산이 gamma 와 beta 라는 parameter 를 가지고 있음을 기억해 주시면 도움이 됩니다.
IN -> PostScale 은 다음과 같이 표현 가능합니다 (scale 상수=a).
PreScale -> IN 의 경우는 전개를 해보면 InstanceNorm 형태로 표현이 불가능합니다. 한번 시도해보겠습니다 (scale 상수=a).