학습 결과를 공유하려면?
model.save()
- 학습 결과 저장을 위한 메서드
- 모델 아키텍처와 파라미터 저장.
- 모델 학습 중간 과정 저장 \(\rightarrow\) 최선의 결과 모델 선택.
- 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상.
문제 설명
링크
Datasets
- 데이터 입력 형태를 정의하는 클래스
- 데이터 입력 방식의 표준화
- 이미지, 텍스트, 오디오 등에 따라 다른 입력 정의
- 데이터 형태에 따라 각 메서드를 다르게 정의
- 모든 것을 데이터 생성 시점에 처리할 필요 없음 .. 이미지의 텐서 변화는 학습에 필요한 시점에 변환
- 데이터셋에 대한 표준화된 처리 방법 제공 필요!
- 최근 HuggingFace 등 표준화된 라이브러리 사용.
AutoGrad & Optimizer
파이토치 프로젝트 템플릿의 필요성?
- 개발 초기 단계에서는 대화식 개발 과정이 유리.
\(\rightarrow\) 학습 과정과 디버깅 등 지속적인 확인. - 배포 및 공유 단계에서 notebook 공유의 어려움.
\(\rightarrow\) 쉬운 재현 어려움, 실행 순서 꼬임. - DL 코드도 하나의 프로그램
.. 개발 용이성 확보 & 유지보수 향상 필요.
파이토치 = numpy + AutoGrad
- ndim, shape과 같은 attribute 그대로 적용
텐서플로우TensorFlow, 케라스Keras
- 텐서플로우TensorFlow 공개 이유?
\(\rightarrow\) 문서화를 잘 하기 위해서. 개발 내용을 다른 사람들이 정확히 파악하게 하기 위해서. - 케라스Keras는 기본적으로 wrapper! 그 아래에는 텐서플로우, 파이토치 등으로 구현될 수 있게 됨.
주피터(Jupyter)
- IPython 커널 기반 대화형 파이썬 셸interactive Python shell
- Julia + Python + R
- 자동화 작업에 있어, 파이썬은 인터프리터 언어interpreted language로서 컴파일과 링킹이 불필요하기 때문에 프로그램 개발에 있어서 시간 절약의 이점을 가짐. 반면, C/C++, Java 등의 언어는 라이브러리를 사용하여 쓰기 - 컴파일 - 테스트 - 재컴파일write - compile - test - recompile 주기를 거치는 것이 느림.
- C/C++, Java 프로그램에 비해 파이썬 작성 프로그램이 길이가 짧은 이유?
- 하이레벨high-level 데이터 타입이 복잡한 연산을 단일문으로 변환 가능.
- 구문 그룹화는 괄호가 아닌 들여쓰기에 의해 통제.
- 변수나 인자 선언 불필요.