0

我想将语音数据分为四种不同的情绪(愤怒、悲伤、快乐、中性)。

问题是当我运行 RNN 代码时,所有语音数据都归为一类。

(例如,所有语音数据一直被归类为“愤怒”。)

我不知道这个问题的原因是什么,以及我必须改变什么来进行培训。

这是我用于训练和计算准确性的 tensorflow RNN 主要功能:

def RNN(x, weights, biases, lstm_size):

    lstm_cell = []

    for i in range(lstm_size):
        lstm_cell.append(rnn.BasicLSTMCell(hidden_dim, forget_bias=1.0, state_is_tuple=True, activation=tf.nn.sigmoid))
    stacked_lstm = tf.contrib.rnn.MultiRNNCell(lstm_cell, state_is_tuple=True)
    outputs, states = tf.nn.dynamic_rnn(stacked_lstm, x, dtype=tf.float32)
    foutput = tf.contrib.layers.fully_connected(outputs[:,-1], output_dim, activation_fn = None)

    return foutput

logits = RNN(X, weights, biases, lstm_size)
prediction = tf.nn.sigmoid(logits)
cost =tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=Y))  
learning_rate =tf.train.exponential_decay(learning_rate=initial_learning_rate, global_step=training_steps, decay_steps=training_steps/10, decay_rate=0.96, staircase=True)
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate) 
train_op = optimizer.minimize(cost)

pred = tf.argmax(prediction, axis=1)
label = tf.argmax(Y, axis=1)
correct_pred = tf.equal(pred, label)

accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float))

RNN 的输入是语音特征(音高和 MFCC),RNN 的输出是 one-hot 代码。(例如,anger=[1,0,0,0])。

另外,我想知道这样计算分类精度是否正确。

4

0 回答 0