说我有以下简单的神经网络。我把范围缩小了。
def Network(in1, in2, is_train):
dense1 = tf.layers.dense(in1, 100, activation=tf.nn.relu)
feed_tensor = tf.cond(is_train > 0, lambda: dense1, lambda: in2)
output = tf.layers.dense(feed_tensor, 3, activation=tf.nn.relu)
return output
首先,我通过提供所有3个张量的值来训练神经网络。
opt = tf.train.AdamOptimizer(learn_rate).minimize(loss)
sess.run(opt, feed_dict={in1: input1, in2: input2, is_train: 1})
然后,我仅输入in2
和is_train
的feed值,并尝试观察输出。
out = (output, feed_dict={in2: input2, is_train: 0})
理想情况下,当is_train = 0
时,应该将in2
张量的值分配给feed_tensor
,并且不需要将值馈送到in1
。
但是,如果运行上述命令,则会出现“您必须输入占位符张量的值”错误。
您能解释一下为什么会发生这种情况以及摆脱这种情况的可能方法吗?
具体来说,我想要的是选择一个张量,以根据是否训练时间将其馈送到下一层。
编辑:通过向in1
输入虚拟张量可以解决此问题吗?