Tensorflow是否适用于具有2个输出的CNN回归量

时间:2017-07-11 21:22:45

标签: tensorflow regression

对于CNN(或常规NN),如果定义2个输出,则每个输出的输出层不同(权重)。以下2个案例似乎有效(收敛),但不确定这是否正确。在以下情况下如何传播错误?

1)如果定义如下,2个输出的误差被平均,然后从2个输出层反向传播,具有相同的误差,然后到训练期间的休息层?

   logits = output(full, num_outputs)
   output = tf.tanh(logits)
   cost = tf.reduce_mean(tf.square(tf.subtract(y, output))) 
   optimizer = tf.train.AdamOptimizer(learn_rate).minimize(cost)

2)如果将成本定义如下,则每个输出的误差从每个输出层反向传播(误差不同于每个输出),然后在训练期间返回到其余层?

   cost = tf.reduce_mean(tf.square(tf.subtract(y, output)), 0) 

1 个答案:

答案 0 :(得分:0)

我将回答第二个问题(我们在评论中讨论第一个问题,我们可以继续讨论)。

之间的区别
cost = tf.reduce_mean(tf.square(tf.subtract(y, output)))

cost = tf.reduce_mean(tf.square(tf.subtract(y, output)), 0)

是在第一种情况下,均值是在参数中的每个值上计算的,因此它会产生单个值。在第二种情况下,平均值是针对沿轴0的每个项目单独计算的。假设您正在对批次样本进行培训,第二种情况将分别计算批次中每个样本的成本,其中第一种情况将计算所有样本的成本样品

查看tensorflow源,似乎优化器会适当地处理这两种情况,尝试最小化成本函数,无论它返回单个值还是多个值。