我正在使用LSTM编写分类问题程序。 但是,我不知道如何用LSTM的所有输出计算交叉熵。 这是我的计划的一部分。
cell_fw = tf.nn.rnn_cell.LSTMCell(num_hidden)
cell_bw = tf.nn.rnn_cell.LSTMCell(num_hidden)
outputs, _ = tf.nn.bidirectional_dynamic_rnn(cell_fw,cell_bw,inputs = inputs3, dtype=tf.float32,sequence_length= seq_len)
outputs = tf.concat(outputs,axis=2)
#outputs [batch_size,max_timestep,num_features]
outputs = tf.reshape(outputs, [-1, num_hidden*2])
W = tf.Variable(tf.truncated_normal([num_hidden*2,
num_classes],
stddev=0.1))
b = tf.Variable(tf.constant(0., shape=[num_classes]))
logits = tf.matmul(outputs, W) + b
如何对此应用crossentropy错误? 我应该创建一个向量,表示与每个批次的max_timestep数相同的类,并用它计算错误吗?
答案 0 :(得分:0)
您是否查看了cross_entropy
文档:https://www.tensorflow.org/api_docs/python/tf/losses/softmax_cross_entropy?
onehot_labels
的维度应该回答您的问题。