如何在有多个输入和输出节点并且两者都是实值的情况下训练感知器?
我这样做是因为我想训练神经网络来预测MFCC给定一些数据点(来自信号)。
以下是一个示例数据:http://pastebin.com/dtHGUeax 我不会把数据放在这里,因为文件是"大"。
我现在正在使用nolearn,因为稍后我会为深度学习添加更多图层。
net = NeuralNet(
layers=[('input', layers.InputLayer),
('output', layers.DenseLayer),
],
# Layer parameters
input_shape=(None, 256),
output_nonlinearity=lasagne.nonlinearities.softmax,
output_num_units=13,
# Optimization
update=nesterov_momentum,
update_learning_rate=0.01,
update_momentum=0.9,
regression=True,
max_epochs=500,
verbose=1
)
我用这种方法得到的错误率非常高。
答案 0 :(得分:0)
MFCC提取可以用以下神经网络表示:
如果您使用nolearn重现此网络,它将能够正确学习它,但是,在Lasagne中尚未实现对数非线性,因此您必须自己实现它。另一种解决方案是用tanh或一对标准非线性层代替对数非线性。
因此,为了再现MFCC,你需要有2层具有对数非线性或3-4层具有softmax非线性,最后一层必须配置线性非线性。