TensorFlow 그래프에 if 조건을 추가하는 방법은 무엇입니까?
다음 코드가 있다고 가정 해 보겠습니다.
x = tf.placeholder("float32", shape=[None, ins_size**2*3], name = "x_input")
condition = tf.placeholder("int32", shape=[1, 1], name = "condition")
W = tf.Variable(tf.zeros([ins_size**2*3,label_option]), name = "weights")
b = tf.Variable(tf.zeros([label_option]), name = "bias")
if condition > 0:
y = tf.nn.softmax(tf.matmul(x, W) + b)
else:
y = tf.nn.softmax(tf.matmul(x, W) - b)
if
계산에서 그 진술이 작동할까요 (나는 그렇게 생각하지 않습니다)? 그렇지 않은 경우 if
TensorFlow 계산 그래프에 문을 어떻게 추가 할 수 있습니까?
if
조건이 그래프 생성 시간에 평가되기 때문에 여기서 문이 작동하지 않는다는 것이 맞습니다 . 반면에 조건이 런타임에 자리 표시 자에 제공된 값에 종속되기를 원할 것입니다. (사실, 그것은 때문에 항상 첫 번째 분기를 취할 것입니다 condition > 0
평가하는에 Tensor
인 파이썬에서 "truthy는" .)
조건부 제어 흐름을 지원하기 위해 TensorFlow는 tf.cond()
부울 조건에 따라 두 분기 중 하나를 평가 하는 연산자를 제공합니다 . 사용 방법을 보여주기 위해 프로그램을 다시 작성하여 단순성을 위해 condition
스칼라 tf.int32
값 이 되도록합니다 .
x = tf.placeholder(tf.float32, shape=[None, ins_size**2*3], name="x_input")
condition = tf.placeholder(tf.int32, shape=[], name="condition")
W = tf.Variable(tf.zeros([ins_size**2 * 3, label_option]), name="weights")
b = tf.Variable(tf.zeros([label_option]), name="bias")
y = tf.cond(condition > 0, lambda: tf.matmul(x, W) + b, lambda: tf.matmul(x, W) - b)
TensorFlow 2.0
TF 2.0에는 AutoGraph라는 기능이 도입되어 JIT에서 Python 코드를 Graph 실행으로 컴파일 할 수 있습니다. 즉, 파이썬 제어 흐름 문을 사용할 수 있습니다 (예, 여기에는 if
문 이 포함됨 ). 문서에서
사인은 같은 일반적인 파이썬 문을 지원
while
,for
,if
,break
,continue
와return
, 중첩을 지원. 즉 ,while
및if
문 조건에서 Tensor 표현식을 사용 하거나for
루프 에서 Tensor를 반복 할 수 있습니다 .
로직을 구현하는 함수를 정의하고로 주석을 달아야합니다 tf.function
. 다음은 문서에서 수정 된 예입니다.
import tensorflow as tf
@tf.function
def sum_even(items):
s = 0
for c in items:
if tf.equal(c % 2, 0):
s += c
return s
sum_even(tf.constant([10, 12, 15, 20]))
# <tf.Tensor: id=1146, shape=(), dtype=int32, numpy=42>
참조 URL : https://stackoverflow.com/questions/35833011/how-to-add-if-condition-in-a-tensorflow-graph
'development' 카테고리의 다른 글
Python Pandas equivalent in JavaScript (0) | 2021.01.07 |
---|---|
git repo를 종속성으로 포함하도록 setup.py를 작성하는 방법 (0) | 2021.01.07 |
VueJS v-for와 함께 계산 된 속성을 어떻게 사용할 수 있습니까? (0) | 2021.01.07 |
docker run -it 플래그는 무엇입니까? (0) | 2021.01.07 |
MEF (Managed Extensibility Framework) 대 IoC / DI (0) | 2021.01.07 |