我想在Torch中建立一个CNN,以对(小型)录音进行分类。我有一些样本,每个样本都有16608x1个样本(如果样本太大,可以压缩它们)。大约有300个样本(如果需要的话,有900个样本,但我想先尝试使用这个较小的样本集),将其分为30个类别。

到目前为止,这是我写的内容:

net = nn.Sequential()
-- 1
net:add( nn.TemporalConvolution(1, 640, 1529) )
net:add( nn.TemporalMaxPooling(4) )
net:add( nn.LogSoftMax() )
-- 2
net:add( nn.TemporalConvolution(640, 15, 647) )
net:add( nn.TemporalMaxPooling(9) )
net:add( nn.LogSoftMax() )
-- review
net:add( nn.View(347 * 15) )
net:add( nn.Linear(347 * 15, 450) )
net:add( nn.ReLU() )
net:add( nn.Linear(450, 128) )
net:add( nn.ReLU() )
net:add( nn.Linear(128, 30) )
net:add( nn.LogSigmoid() )

-- class setup
-- mean to 0, stdv to 1

criterion = nn.ClassNLLCriterion()
trainer = nn.StochasticGradient(net, criterion)
trainer.learningRate = 0.01
trainer.maxIteration = 15
trainer:train(trainset)


当我运行它时,ClassNLLCriterion.c中有一个错误,而assertion (cur_target >= 0 && cur_target < n_classes)上有错误。

另外,所有数字都是实验性的,我正在实验中(这是我的第一个CNN之一)

最佳答案

您的目标类别似乎超出范围。您将网络定义为具有30个类别作为网络的输出,但是也许您的火车组具有 30个类别。

另外,请注意,在割炬类中,索引从1到N。

关于networking - 时态CNN对声音进行分类:cur_target断言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44607558/

10-12 22:37