2016-06-21 87 views
0

我正在训练的双向LSTM网络,但是当我训练它,我得到这个如下的双向LSTM没有收敛:在Tensorflow

" 
Iter 3456, Minibatch Loss= 10.305597, Training Accuracy= 0.25000 
Iter 3840, Minibatch Loss= 22.018646, Training Accuracy= 0.00000 
Iter 4224, Minibatch Loss= 34.245750, Training Accuracy= 0.00000 
Iter 4608, Minibatch Loss= 13.833059, Training Accuracy= 0.12500 
Iter 4992, Minibatch Loss= 19.687658, Training Accuracy= 0.00000 
" 

即使迭代50 0000,损失和准确性几乎相同。我的设置如下:

# Parameters 
learning_rate = 0.0001 
training_iters = 20000#120000 
batch_size = tf.placeholder(dtype=tf.int32)#24,128 
display_step = 16#10 
test_num = 275#245 
keep_prob = tf.placeholder("float") #probability for dropout 
kp = 1.0 

# Network Parameters 
n_input = 240*160 #28 # MNIST data input (img shape: 28*28) 
n_steps = 16 #28 # timesteps 
n_hidden = 500 # hidden layer num of features 
n_classes = 20 

这是技术或方案的问题?

回答

2

我会尝试的第一件事是改变学习率,看看你是否可以减少损失。 将准确度与某些基线进行比较也许会有所帮助(例如,您是否比预测分类问题中最常见的类别要好)。

如果您的损失在广泛的学习率上没有下降,我会开始寻找代码中的错误(例如更新权重实际运行的训练操作,功能和标签是否匹配,您的数据是否随机化正确地......)。

如果技术(双向LSTM)存在问题取决于您试图完成的任务。如果您实际上将此应用于MNIST(基于您的代码中的评论),那么我宁愿推荐一些卷积层和maxpool层而不是RNN。