728x90
반응형
TensorFlow Function
- Pytorch, Theano 등의 딥러닝 라이브러리에 있는 함수 기능을 본떠 TensorFlow 버전 2에서 새로 만들어진 방법
- 선언적으로 계산 과정을 구현
- 일반 파이썬 함수처럼 정의
- 속도 향상을 위한 컴파일이 가능하며, @tf.function 데코레이터를 적용하여 구현
import tensorflow as tf
def t_func1(x):
tv = tf.Variable([[4,5],[9,10]])
return tv * x
print(t_func1(10))
@tf.function
def t_func2(a,b):
return tf.matmul(a, b)
x = [[4,5,6],[6,7,9]]
w = tf.Variable([[2,5],[6,5],[17,10]])
print(t_func2(x,w))
>>
tf.Tensor(
[[ 40 50]
[ 90 100]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[140 105]
[207 155]], shape=(2, 2), dtype=int32)
TensorFlow 미분
- 변수 텐서 혹은 변수 텐서를 포함하는 연산의 결과로 만들어진 텐서를 입력으로 가지는 함수는 그 변수텐서로 미분한 값을 계산
- GradientTape()로 만들어지는 gradient tape 컨텍스트 내에서 함수값 결과를 저장한 텐서 y를 만든다.
- tape.gradient(y, x) 명령으로 변수형 텐서 x에 대한 y의 미분값을 계산
- 상수형 텐서에 대해 미분하고 싶으면 tape.watch() 함수를 사용하여 상수형 텐서를 변수형 텐서처럼 바꾸어야 함
import tensorflow as tf
x1 = tf.Variable(tf.constant(1.0))
x2 = tf.Variable(tf.constant(2.0))
with tf.GradientTape() as tape:
y = tf.multiply(x1, x2)
gradients = tape.gradient(y, [x1, x2])
print(gradients)
print(gradients[0].numpy())
print(gradients[1].numpy())
>>
[<tf.Tensor: id=19, shape=(), dtype=float32, numpy=2.0>, <tf.Tensor: id=20, shape=(), dtype=float32, numpy=1.0>]
2.0
1.0
728x90
반응형
'Machine Learning > TensorFlow' 카테고리의 다른 글
[Machine Learning] Neural Network MNIST 데이터 처리 (0) | 2021.03.04 |
---|---|
[Machine Learning] Model Save & Load (0) | 2021.03.03 |
[Machine Learning] TensorFlow with Keras (0) | 2021.03.02 |
[Machine Learning] TensorFlow Matrix (0) | 2021.02.27 |
[Machine Learning] TensorFlow Basic (0) | 2021.02.26 |