在二进制输出Tensorflow的情况下必须使用什么损失函数?

2024-03-29 11:53:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我运行多层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,这是不正确的。最终我得到了所有的平均值。但这并不是我所期望的修正或损失函数。请指导我什么可以是我的情况下最好的错误函数


Tags: 函数layerlayerstfcellnncontriboutputs