如何在TensorFlow中仅为训练阶段定义图层?

时间:2017-02-13 22:45:43

标签: tensorflow neural-network deep-learning caffe conv-neural-network

我想知道是否可以仅为TensorFlow中的训练阶段定义一个层(卷积,元素求和等)。

例如,我想在我的网络中只有训练阶段的元素总和层,我想在测试阶段忽略这一层。

这在Caffe中很容易实现,我想知道是否可以在TensorFlow中这样做。

3 个答案:

答案 0 :(得分:1)

您可能希望使用“tf.cond”control_flow操作执行此操作。 https://www.tensorflow.org/api_docs/python/control_flow_ops/control_flow_operations#cond

答案 1 :(得分: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

答案 2 :(得分:0)

我认为您可以通过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