연구
-
Convolution & Batchnorm Fusing연구/Machine Learning 2020. 9. 23. 16:57
많은 머신러닝 모델에서 Conv layer 뒤에 Batch norm 을 사용한다. 두 layer의 수식을 정리하면 아래와 같다. (학습 시 저장되는 parameter는 bold체로 표시) 이렇게 학습된 모델 parameter를 load하여 inference 시, Conv layer와 Batch norm parameter를 합쳐서(fusing) Batch norm연산 과정을 제거할 수 있다. 즉, 기존 conv layer의 weight와 bias를 fused weight와 fused bias로 대체하면 inference network의 Batch norm을 제거하고 Conv layer 하나만 사용할 수 있다!
-
Bi-Directional LSTM (BLSTM) parameter 이해연구/Machine Learning 2020. 9. 22. 21:56
LSTM을 다루던 중 Bi-directional LSTM 을 사용하게 됐다. 개념은 아래 그림과 같다. 많은 블로그 및 자료에서 BLSTM이 무엇인지는 잘 설명하고 있으므로, 기본적인 내용은 pass 진행한 작업은 pytorch nn.LSTM과 동일한 역할을 수행하는 myLSTM 모듈을 만드는 것이었다. 모듈을 만들고 nn.LSTM과 같은 output을 내는지 확인해봤는데, forward dirction의 output은 동일한 값을 뱉었지만 backward direction output은 무슨 짓을 해도 다른 결과를 보여줬다. 결국 찾아낸 해답은 아래와 같다. 난 모든 LSTM cell이 같은 weight, bias parameter를 공유한다고 생각했는데 forward direction과 backwar..
-
[git] 파일 권한 문제로 인한 git status, git diff error해결(old mode 100644, new mode 100755)연구/저장용 2020. 9. 10. 23:17
git 을 사용하여 관리하다보면 파일은 분명 같은데 git diff 에서 위 그림과 같은 메세지가 출력될 때가 있다. git status 에서도 modified된 파일이 있다고 표시될 것이다. 이는 파일의 권한이 변경됨으로 인해 발생된 것으로, 아래의 코드 한 줄을 입력하여 간단하게 무시할 수 있다. git config core.filemode false
-
MS WORD 2013 이상에서 각주 다단 문제 해결연구/저장용 2020. 9. 10. 23:15
IEEE paper templete 첫페이지에는 연구자 및 연구의 과제명 등을 설명하는 내용이 좌측 하단에 각주로 들어가 있다. 그런데 doc인 확장자를 수식입력을 위해 docx로 호환성을 맞추고 나면 WORD는 각주를 다단으로 나누어 버린다. 이 문제 때문에 몇시간을 버렸는데, 나중에 다시 보기 위해 정리. 1. ALT+F11 -> VBA Editor 열림 2. CTRL+G -> 하단에 '직접 입력' 창 열림 3. '직접 입력' 창에 다음을 입력 후 엔터 : ActiveDocument.SetCompatibilityMode 14 4. VBA Editor 닫고, 파일-> 옵션-> 고급-> 호환성옵션-> 다음 프로그램에서 만든 것처럼 레이아웃 저장 -> Microsoft Wrod 2010-> 확인 ..
-
Line Profiler - Profile python code execution time (example)연구/Python 2020. 9. 9. 14:28
주로 사용하는 Python profiler인 Line Profiler를 Example과 함께 간단히 소개합니다. Line profiler 설치 pip install line_profiler Example code : conv2d, batchnorm2d, relu 로 이루어진 간단한 network를 만들었습니다. import torch import torch.nn as nn @profile def convmodel(netwrok, input, iter): for i in range (iter): out = network.conv2d(input) out = network.bn(out) out = network.relu(out) return out if __name__ == '__main__': input =..