0

我正在训练一个双向 LSTM 网络,但是当我训练它时,我得到了如下信息:

"
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 

这是技术问题还是方案问题?

4

1 回答 1

2

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

如果你的损失在大范围的学习率下根本没有减少,我会开始寻找代码中的错误(例如,更新权重的训练操作是否实际运行,特征和标签是否匹配,你的数据是否正确随机化,.. .)。

该技术(双向 LSTM)是否存在问题取决于您要完成的任务。如果您实际上将其应用于 MNIST(基于代码中的注释),那么我宁愿推荐一些卷积层和最大池化层,而不是 RNN。

于 2016-06-22T18:28:24.330 回答