用Tensorflow训练深度学习网络时,average loss for each batch会随着batch size 大小而成反比的变化,本来是该保持稳定的。
经过一系列的检查,找到了原因:在使用Tensorflow API的时候,落了一个参数。计算向量乘积时, 错误的代码如下。
multi = tf.reduce_sum(tf.mul(question, answer))
tf.reduce_sum(input_tensor, reduction_indices=none)方法的说明如下, indices表示要减少的维度,如果为none的话,方法会把所有的元素相加。
reduce_sum(input_tensor, reduction_indices=None, keep_dims=False, name=None)
Computes the sum of elements across dimensions of a tensor.
Reduces `input_tensor` along the dimensions given in `reduction_indices`.
Unless `keep_dims` is true, the rank of the tensor is reduced by 1 for each
entry in `reduction_indices`. If `keep_dims` is true, the reduced dimensions
are retained with length 1.
If `reduction_indices` has no entries, all dimensions are reduced, and a
tensor with a single element is returned.
正确的代码如下,reduction_indices=1。
multi = tf.reduce_sum(tf.mul(question, answer), 1)
问题解决了~~