我正在训练双向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
这是技术或方案的问题吗?
答案 0 :(得分:2)
我要尝试的第一件事是改变学习率,看看你是否可以减少损失。 将准确性与某些基线进行比较也可能有所帮助(例如,您比预测分类问题中最常见的类更好)。
如果您的损失在各种学习率下都没有下降,我会开始寻找代码中的错误(例如,更新权重实际运行的训练操作,功能和标签是否匹配,您的数据是否正确随机化) ,...)。
如果技术问题(双向LSTM)取决于您要完成的任务。如果您实际将此应用于MNIST(基于您的代码中的注释),那么我宁愿推荐一些卷积和最大化层而不是RNN。