TensorFlow 수학연산
- Numpy에서 사용되는 대부분의 수학 연산을 동일한 방법으로 사용 가능
- 텐서플로우 연산자들은 TPU, GPU와 같은 가속 하드웨어를 이용해 수행 가능
TensorFlow 연산의 미분
- 미분 가능한 연산들에 대해서 자동으로 미분 계산
- GradientTape 컨텍스 내에서 .watch() 메서드를 통해 해당 텐서로 수행하는 연산에 대해 미분 확인(상수 텐서의 경우)
- 변수 텐서의 경우 .watch() 메서드를 사용하지 않아도 연산에 대한 미분 확인 가능
<TF 2.0 연산자 실습>
import tensorflow as tf
import numpy as np
# (2, 3) 형태의 상수 텐서 'tensor_a' 생성
tensor_a = tf.constant([[1., 2., 3.],
[4., 5., 6.]])
# tf.math 모듈의 지수(exponential)함수를 이용해 'tensor_a' 텐서에 지수 연산 적용
print('*******1. 지수연산*******')
tensor_exp = tf.math.exp(tensor_a)
print(np.round(tensor_exp, 2))
"""
2. tensorflow 연산자를 이용해 'tensor_a'의 axis 0 을 기준으로 최대값 선택
- tf.math.argmax() 는 지정한 축 기준 최대 값의 인덱스 정보를 조회 해오는 함수로 이번 문제에는 적용되지 않음
- 적절한 함수를 tf.math 모듈에서 찾아서 사용하시기 바랍니다.
- 참고 url : https://www.tensorflow.org/api_docs/python/tf/math/reduce_max
"""
# tf.math 모듈의 함수를 이용해 'tensor_a'의 axis 0 기준 최대값 선택
print('\n*******2. axis 0 기준 최대값*******')
tensor_axis_max = tf.math.reduce_max(tensor_a, axis=0)
print(tensor_axis_max)
"""
3. tensorflow 연산자를 이용해 z = (x+y)^2 계산식에서 x 값이 z 값에 미치는 영향도(미분) 계산
"""
tensor_x = tf.Variable([[1., 2., 3.],
[4., 5., 6.]])
tensor_y = tf.Variable([[7., 8., 9.],
[10., 11., 12.]])
print("\n*******3. 'tensor_x' 값이 'tensor_z' 값에 미치는 영향도(미분 값)*******")
with tf.GradientTape() as tape:
# 텐서플로 연산자와 변수 텐서를 이용해 계산그래프 정의
tensor_z = tf.square(tensor_x + tensor_y)
# tape.gradient를 통해 tensor_x 가 tensor_z 에 미치는 영향도(미분 값)를 계산
gradient_zx = tape.gradient(target=tensor_z, sources=tensor_x)
# 계산된 영향도(미분 값) 확인
print(np.round(gradient_zx, 2))
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Keras API (0) | 2022.02.22 |
---|---|
이미지 데이터 처리를 위한 CNN 완벽 가이드 - TF 2.0을 이용한 퍼셉트론 구현 (0) | 2022.02.19 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - TF 2.0을 이용한 인공신경망 데이터 이해 (0) | 2022.02.17 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Numpy를 이용한 인공신경망 데이터 이해 (0) | 2022.02.17 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Colab 기본 사용법 (0) | 2022.02.15 |