这是我运行多层LSTM的代码:
layers = [tf.contrib.rnn.LSTMCell(num_units=n_neurons,
activation=tf.nn.leaky_relu, use_peepholes = True)
for layer in range(n_layers)]
multi_layer_cell = tf.contrib.rnn.MultiRNNCell(layers)
rnn_outputs, states = tf.nn.dynamic_rnn(multi_layer_cell, X, dtype=tf.float32)
stacked_rnn_outputs = tf.reshape(rnn_outputs, [-1, n_neurons])
stacked_outputs = tf.layers.dense(stacked_rnn_outputs, n_outputs)
outputs = tf.reshape(stacked_outputs, [-1, n_steps, n_outputs])
outputs = outputs[:,n_steps-1,:] # keep only last output of sequence
loss = tf.reduce_mean(tf.squared_difference(outputs, y)) # loss function = mean squared error
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate)
training_op = optimizer.minimize(loss)
如你所见,我使用均方根误差函数来指导我的LSTM。我得到的输出在0和1之间,这与我期望的不完全一致。我猜这是因为我的错误函数对操作不正确
我期望训练的输出必须在0到0.5和0.5到1之间。但是输出很奇怪。大约是0.9和1,这是不正确的。最终我得到了所有的平均值。但这并不是我所期望的修正或损失函数。请指导我什么可以是我的情况下最好的错误函数
目前没有回答
相关问题 更多 >
编程相关推荐