我正在研究一个使用DNN的语音go 噪问题.我正在通过下面的函数计算我的信噪比.
def calculate_snr(clean_signal, recovered_signal):
clean_power = tf.reduce_sum(tf.square(clean_signal))
noise_power = tf.reduce_sum(tf.square(clean_signal - recovered_signal))
snr_db = 10 * tf.math.log(clean_power / noise_power) / tf.math.log(10.0)
return snr_db
我正在使用keras API创建这样的模型
model.compile(loss='mean_squared_error', optimizer=keras.optimizers.Adam(learning_rate=learning_rate),metrics=[calculate_snr])
sound_denoising_history = model.fit(x = X_abs.T, y = S_abs.T,epochs=200,batch_size = 100,validation_data=(X_test_01_abs.T,S_test_01_abs.T))
calculate_snr (X_test_01_abs.T,model.predict(X_test_01_abs.T) : 10.9
While model fit: -4.4 to -3
当我训练它时,我发现我的验证SNR度量是-7,并在该范围内振荡.然而,如果我预测xval输入,然后将其与上面的函数一起使用,它会得到8.2.这是相同的功能,我已经判断了多次尺寸.我不知道发生了什么事?
编辑:我知道我错过了信号SNR计算的处理步骤,但即使该度量是独立使用的,它也应该在列车末端产生几乎相同的结果,然后进行推理和计算