2025/08/25 3

Define-by-Run과 Define-and-Run

딥러닝 프레임워크는 동작 방식에 따라 크게 두 가지로 나눌 수 있다.Define-and-Run (정적 계산 그래프)Define-by-Run (동적 계산 그래프)Define-and-RunDefine-and-Run을 직역하면 '계산 그래프를 정의한 다음 데이터를 흘려보낸다'는 뜻이다.즉, 아래 순서대로 동작이 진행된다.사용자는 계산 그래프를 정의한다.프레임워크는 주어진 그래프를 컴퓨터가 처리할 수 있는 형태로 변환한다.데이터를 흘려보낸다.# 계산 그래프 정의a = Variable('a')b = Variable('b')c = a*bd = c + Constant(1)# 계산 그래프 컴파일f = compile(d)# 데이터 흘려보내기d = f(a=np.array(2), b=np.array(3))먼저 첫 네 줄로 ..

python - from A import B와 import A.B as b의 차이

과거 모듈 내 객체를 싱글톤처럼 사용하려던 기억이 있었는데, 이 둘의 차이를 구분하지 못해 고생했던 기억이 있다.이번 기회에 글로 정리해두었다.하나씩 알아보자.시작하기 전에 - 모듈, 패키지, 라이브러리모듈모듈은 파이썬 파일을 의미한다.특히 다른 파이썬 프로그램에서 import하여 사용하는 것을 가정하고 만들어진 파이썬 파일을 '모듈'이라 한다.모듈은 import 시 sys.modules 딕셔너리에 보관되게 된다.패키지패키지는 여러 모듈을 묶은 것이다.패키지를 만들려면 먼저 디렉터리를 만들고, 그 안에 모듈과 __init__.py 파일을 추가한다.라이브러리라이브러리는 여러 패키지를 묶은 것이다. 그래서 하나 이상의 디렉터리로 구성된다.때로는 패키지를 가리켜 '라이브러리'라고 부르기도 한다.import 동..

python 애스터리스크(*) - 언패킹의 역할과 예제

파이썬에는 애스터리스크가 포인터도 아닌 것이 특이한 일을 하고 있어, 이 코드를 처음 보면 당황하기 부지기수이다.파이썬의 애스터리스크 기호의 사용법에 대해 자세히 알아보자.대입 언패킹함수 호출 시 언패킹리터럴 내부 언패킹대입 언패킹 (Extended Iterable Unpacking, PEP 3132)오른쪽 이터러블을 왼쪽 변수들에 “펼쳐” 넣는다.*가 붙은 변수는 나머지 전부를 리스트로 받는다.*는 각 패턴 레벨에서 최대 1개만 허용된다.a, *rest = [10, 20, 30]*head, b = (1, 2, 3, 4)x, *mid, y = range(5) * 변수는 항상 리스트가 된다.(튜플 아님).최소 길이만 맞으면 남는 요소가 0개여도 동작한다(그 경우 빈 리스트 ([])가 됨).a, *res..