我的网络被困在70%左右的训练准确率与验证准确率略高于50%(这是一个两类分类问题)。我正在调试它,并希望排除以下原因。你知道吗
除其他外,网络由BasicRNNCell
组成:
rnn_cell = tensorflow.contrib.rnn.BasicRNNCell(100)
tensorflow为这个RNN层创建权重和偏差,我可以使用tf.trainable_variables()
找到:
<tf.Variable 'network/rnn/basic_rnn_cell/kernel:0' shape=(200, 100) dtype=float32_ref>,
<tf.Variable 'network/rnn/basic_rnn_cell/bias:0' shape=(100,) dtype=float32_ref>
在训练过程中,kernel:0
的值会像我期望的那样每一步都会改变,另一边的bias
的值都是零,不会改变。我正在使用AdagradOptimizer:
optimizer = tf.train.AdagradOptimizer(learning_rate=learning_rate).minimize(cost)
在我的理解中,每个训练步骤都应该像重量一样更新偏差。你知道吗
这是预期的行为吗?这是不是让我的学习陷入困境的原因?你知道吗
以我的经验,我不会把重点放在那样的细节上。很难说从你给出的是否应该有一个非零的偏见。使用RNN时,最好使用剪裁的渐变。我在训练中看到了很大的进步
一般来说,1到5之间的最大梯度标准效果最好。我也更喜欢adamOptimizer。我希望这有帮助!你知道吗
相关问题 更多 >
编程相关推荐