반응형
ViT 코드 구현실습하다가 마주친 GELU!
GELU (Gaussian Error Linear Unit)
- dropout, zoneout, ReLU 함수의 특성을 조합하여 유도됨
- BERT, BERT, ALBERT 등 최신 딥러닝 모델에서 굉장히 많이 사용
def gelu(x):
return 0.5*x*(1+tf.tanh(np.sqrt(2/np.pi)*(x+0.044715*tf.pow(x, 3))))
자세한 내용은 아래 블로그에 잘 설명되어있다!
그래프 그려보기
import numpy as np
import matplotlib.pyplot as plt
def gelu(x):
return 0.5*x*(1+np.tanh(np.sqrt(2/np.pi)*(x+0.044715*pow(x, 3))))
x = np.arange(-10, 10, 0.1)
y = gelu(x)
plt.style.use('seaborn-ticks')
plt.figure(figsize=(8,5))
plt.xlim(-6, 6)
plt.ylim(-0.5, 6)
plt.yticks(ticks=np.arange(-0.5,6, step=0.5))
plt.axhline(0, color='black', alpha = 0.3)
plt.axvline(0, color='black', alpha = 0.3)
plt.grid()
plt.plot(x, y)
plt.title('GELU')
plt.show()
반응형
'AI' 카테고리의 다른 글
NAVER DEVIEW 2023: 네이버 개발자 컨퍼런스 (0) | 2023.02.28 |
---|---|
ffmpeg 동영상 코덱 바꾸기 (0) | 2023.02.22 |
einops 이미지 패치 자르기 (0) | 2023.02.20 |
벡터 & 실좌표공간 (0) | 2023.02.20 |
ViT : Vision Transformer 이해하기 (0) | 2023.02.14 |