Open givitallugot opened 1 year ago
# 입력의 세 제곱을 계산하는 함수 만들기
# solution 1. 파이썬 함수를 정의한 뒤 텐서플로 함수로 변환
def cube(x):
return x ** 3
## tf.function 함수를 사용하여 파이썬 함수를 텐서플로 함수로 변환. 계산을 분석하고 동일한 작업을 수행하는 계산 그래프 생성
## 원래 파이썬 함수처럼 사용할 수도 있고 동일한 결과를 반환 (결과는 텐서)
tf_cube = tf.function(cube)
# solution 2. 데코레이터 활용 - 더 널리 사용되는 방식
@tf.function
def tf_cube(x):
return x ** 3
## 원본 파이썬 함수가 필요하다면 python_function 속성으로 참조 가능
tf_cube.python_function(2) # 8
dynamic = True
지정run_eagerly = True
지정텐서플로가 그래프 생성을 위해서 먼저 함수의 소스 코드를 분석
for문, while문, if문, break, continue, return과 같은 제어문을 찾음
이런 제어문을 찾을 수 있는 방법은 제공하지 않기 때문에 이 함수의 모든 제어문을 텐서플로 연산으로 바꾼 업그레이드된 버전을 만듦
추가로 sum_squares() 함수는 tf_sum_squares()로, for문은 loop_body() 함수로 변환해서 연산
다음으로 텐서플로가 이렇게 업그레이드된 함수를 호출, 이때 그래프 모드로 실행
그래프 모드는 실제 값이 없고 이름, 데이터 타입, 크기만 가지는 형태
최종 그래프는 트레이싱 과정을 통해 생성
1: 12.4 2: 12.4.1 3: 12.4.2