module vs package
예시 - keras
__init__.py (./keras)
from __future__ import absolute_import
from . import utils
from . import activations
from . import applications
from . import backend
from . import datasets
from . import engine
from . import layers
from . import preprocessing
from . import wrappers
from . import callbacks
from . import constraints
from . import initializers
from . import metrics
from . import models
from . import losses
from . import optimizers
from . import regularizers
# Also importable from root
from .layers import Input
from .models import Model
from .models import Sequential
__version__ = '2.3.1'
요즘 많이쓰는 keras를 가져와서 package가 어떤 형식으로 운영이되는지를 파악하려한다.
위는 keras에서 ./keras 경로에 포함되어있는 __init__.py 파일이다.
__init__.py의 역할은 현재 그 폴더를 code, 즉 module들을 모으는 작업인 package화 하기 위해 쓴다.
(module은 )
__init__.py (./keras/preprocessing)
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from .. import backend
from .. import utils
import keras_preprocessing
from . import image
from . import sequence
from . import text
위는 keras에서 ./keras/preprocessing 경로에 포함되어있는 __init__.py 파일이다.
이렇게 하나하나 적혀있는 code들을 module이라고 한다.
또한 __init__.py를 쓰면, (3.3 버젼 이후로는 안 써도 인식이 가능..) 그 폴더는 더이상 resource 파일이 아니라, module들을 묶는 하나의 package이다.
library vs framework
https://engkimbs.tistory.com/673
여기 글에서 잘 설명 되어있다.
library
도구의 모음이다. Python에서 Datetime, Pandas, Beautifulsoup ..., Java에서는 Guava, Apache common library, ... C++ 에서는 STL 등등 소프트웨어의 개발을 쉽게 하기 위한 도구들이 많이 있다.
code를 짜는데 특성에 맞게 하나의 필요한 도구들로 모아놓은 것을 라이브러리라고 한다.
framework
틀에 갖춰서 동작을 하다 라는 뜻이다. Spring, Django, Ruby on Rails 등등이 존재하고, 딥러닝 프레임워크는 Tensorflow, Keras, Pytorch, MNet 등등이 존재한다.
아래는 딥러닝 프레임워크를 정리해놓은 기사이다.
https://www.epnc.co.kr/news/articleView.html?idxno=91752
따라서 우리는 Framework를 사용하면서 라이브러리를 통해 부족한 부분을 보충하면서 code를 모듈화 하고 이러한 모듈들을 package로 만드는 것이 중요하다.
'대학원 공부 > programming language' 카테고리의 다른 글
Python : Selenium의 Webdriver (0) | 2020.04.21 |
---|---|
Numpy : np.linalg.svd (SVD) (0) | 2020.03.12 |
Python : __str__ vs __repr__ 차이점 (0) | 2020.02.24 |
Python : *args **kwargs (0) | 2020.02.21 |
Numpy : np.diag (대각선 요소의 값만 추출한 배열 구하기) (0) | 2020.02.21 |
댓글