0

TensorFlow의 교육 단계에서만 레이어 (컨볼 루션, 요소 별 합계 등)를 정의 할 수 있는지 알고 싶습니다.TensorFlow에서 교육 단계에만 레이어를 정의하는 방법은 무엇입니까?

예를 들어, 네트워크에서 요소 단계별 합계 계층을 학습 단계에서만 사용하고 테스트 단계에서이 계층을 무시하고 싶습니다.

이것은 Caffe에서 쉽게 할 수 있습니다. TensorFlow에서도 가능할 수 있는지 알고 싶었습니다.

답변

0

은 당신이 당신은 "tf.cond"control_flow 작업과이 작업을 수행 할 수 있습니다 if

Train = False 

x = tf.constant(5.) 
y = x + 1 
if Train: 
    y = y + 2 
y = y + 3 

with tf.Session() as sess: 
    res = sess.run(y) # 11 if Train else 9 
1

하여이 작업을 수행 할 수 있다고 생각합니다. https://www.tensorflow.org/api_docs/python/control_flow_ops/control_flow_operations#cond

+0

감사합니다. 그러나 기차 단계와 테스트 단계를 분리하기 위해 "pred"논쟁에 무엇을 넣어야합니까? – Behzad

+0

설명서에 따라 : fn1 또는 fn2의 결과를 반환할지 여부를 결정하는 스칼라. ;) 이 경우 train_phase 텐서를 제공 할 수 있다고 생각합니다. 이게 도움이되는지 알려주세요! – rmeertens

1

나는 tf.cond()로 불린 자리 표시자를 사용할 수 있다고 생각한다. 다음과 같이하십시오.

train_phase = tf.placeholder(tf.bool, []) 
x = tf.constant(2) 
def f1(): return tf.add(x, 1) 
def f2(): return tf.identity(x) 
r = tf.cond(train_phase, f1, f2) 
sess.run(r, feed_dict={train_phase: True}) # training phase, r = tf.add(x, 1) = x + 1 
sess.run(r, feed_dict={train_phase: False}) # testing phase, r = tf.identity(x) = x