functools.partial(func, /, \*args, \*\*keywords)
function 처럼 동작하는 partial object를 반환한다.
- 반환되는
partaial
object를 호출시 parameter로 받은func
이 호출되며 partial
object를 호출할 때 넘겨진 positional argumentsargs
와 keyword argumentskeywords
가 해당func
의 argument로 주어져 호출된다.- 만약
partial
object가 호출될 때 더 많은 arguments가 주어질 경우,partial
object를 생성할 때 주어졌던args
와keywords
에 append되어 func에 넘겨진다 (keyword에 따라 override가 발생함).
동일한 arguments와 keyword arguments로 동일 함수를 여러차례 호출해야하는 경우
functools.partial
을 통해 가벼운 wrapper인 partial
object를 만들어 사용하는게 편함.
2개의 기능을 한번에 구현하고 argument를 통해 실행 기능이 결정되는 경우에, partial로 다른 이름의 callable object를 얻어서 사용하면 가독성 측면에서도 용이함. python 공식문서에서는 docstring까지 기재하는 예도 있음.
다음의 code snippet은 동일한 arguments를 가지는 Dense
layer를 여러 개 사용하기 위해 partial
을 이용하고 있음.
from functools import partial
RegularizedDense = partial(
tf.keras.layers.Dense,
activation="relu",
kernel_initializer="he_normal",
kernel_regularizer=tf.keras.regularizers.l2(0.01)
)
model = tf.keras.Sequential(
[
tf.keras.layers.Flatten(input_shape=[28, 28]),
RegularizedDense(100),
RegularizedDense(100),
RegularizedDense(10, activation="softmax")
]
)
위의 코드의 출처는 다음과 같음.
https://www.oreilly.com/library/view/hands-on-machine-learning/9781492032632/
728x90
'Python' 카테고리의 다른 글
[Python] else : break checker (0) | 2023.09.18 |
---|---|
[Python] Type Annotation : 파이썬에서 변수 및 함수에 type 지정. (0) | 2023.08.30 |
[Python] instance methods, class methods, and static methods (0) | 2023.08.20 |
[Python] Class로 수행시간 측정 decorator 만들기 (0) | 2023.08.18 |
[Python] Decorator (0) | 2023.08.18 |