我一直在尝试使用Scikit-neural网络的mlp(多层感知)训练模型,用于说话人识别。
我有一个名为' mfcc_kushal.csv'的csv文件。排列有13列(13个功能)和1201行(每帧)。这些是我自己的语音信号功能。
如果我尝试将其作为ndarray,我的X_train将有1201个样本,包含13行。现在我的Y_train基本上是一个二进制输出,只是我或不是。 但是有一个错误说X和Y中的样本不一样。
图书馆告诉我使用1201班而不是两班。我错过了什么。我想我没有得到实施。
import csv
import numpy as np
from sknn.mlp import Classifier, Layer
def csv_extractor(csv_file):
with open(csv_file,'r') as dest_f:
data_iter = csv.reader(dest_f,
delimiter = ',')
data = [data for data in data_iter]
feat = np.asarray(data, dtype = None)
feat = feat.astype(np.float)
return feat
feat = csv_extractor('mfcc_kushal.csv')
print(feat)
print(feat.shape[0])
#NN modeling
y_train = np.arange(2)
NN = Classifier(layers =[Layer("Sigmoid", units = 100), Layer("Softmax")],
learning_rate = 0.001,
n_iter = 500 )
NN.fit(feat,y_train)
以下输出显示了它的内容。我还打印了ndarray和行数。 ndarray是同一语音信号的1201个不同帧的单个人的MFCC。