You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Librosa与模型预测时遇错误:y应为1D数组,却得到形状(1,10)的数组

音频分类预测报错:y应为1D数组,却得到形状(1,10)的数组

执行音频分类预测代码时出现错误提示:y should be a 1d array, got an array of shape (1, 10) instead.

原代码:

filename="UrbanSound8K/car_horn.wav"
audio, sample_rate = librosa.load(filename, res_type='kaiser_fast') 
mfccs_features = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfccs_scaled_features = np.mean(mfccs_features.T,axis=0)

print(mfccs_scaled_features)
mfccs_scaled_features=mfccs_scaled_features.reshape(1,-1)
print(mfccs_scaled_features)
print(mfccs_scaled_features.shape)
predicted_label=model.predict(mfccs_scaled_features)
print(predicted_label)
prediction_class = labelencoder.inverse_transform(predicted_label) 
prediction_class

错误原因:

model.predict()返回的是形状为(1,10)的二维数组,对应10个类别的预测概率;而LabelEncoder.inverse_transform()要求输入是1D的类别索引数组,两者形状不匹配导致报错。

解决方法:

通过np.argmax(predicted_label, axis=1)提取概率最大的类别索引,将二维数组转换为1D数组后,再传入inverse_transform()。

修改后的代码:

filename="UrbanSound8K/car_horn.wav"
audio, sample_rate = librosa.load(filename, res_type='kaiser_fast') 
mfccs_features = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfccs_scaled_features = np.mean(mfccs_features.T,axis=0)

print(mfccs_scaled_features)
mfccs_scaled_features=mfccs_scaled_features.reshape(1,-1)
print(mfccs_scaled_features)
print(mfccs_scaled_features.shape)
predicted_label=model.predict(mfccs_scaled_features)
print(predicted_label)
# 提取概率最大的类别索引,转换为1D数组
predicted_index = np.argmax(predicted_label, axis=1)
prediction_class = labelencoder.inverse_transform(predicted_index) 
print(prediction_class)

内容的提问来源于stack exchange,提问作者harsh.rupapara141

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:25:28