我在tensorflow上运行RNN,其输出是一个非常简单的2向量数组。所有RNN必须做的是选择一个值来制作1而一个制作0.然而,当我通过RNN运行我的批次时,我似乎为批次的每个输入获得相同的输出。例如:
如果我的实际输出标签是:
[[ 1. 0.]
[ 1. 0.]
[ 0. 1.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 0. 1.]
[ 0. 1.]
[ 1. 0.]
[ 1. 0.]
[ 0. 1.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]
[ 1. 0.]]
我的RNN输出:
[[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]
[ 1.00000000e+00 7.93261263e-14]]
这显然是错误的。我正在使用[batch_size, time_steps_features]
形状的张量喂养我的RNN,并且我使用tf.nn.dynamic_rnn()
来运行RNN。我没有尝试任何东西似乎工作。
我一直在扯掉我的头发,任何帮助都会非常感激。
谢谢!
答案 0 :(得分:4)
看起来你可能不会在时代之间重新洗牌。这可以导致(误差)最小化到局部最小值,这是你不会离开的。
尽量不要在每次迭代中以相同的顺序提供输入,你应该收敛到更合理的东西。