时间 CNN 对声音进行分类:cur_target 断言
Temporal CNN to classify sounds: cur_target assertion
我想在 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)
您的目标 class 似乎超出了范围。您将网络定义为具有 30 classes 作为网络的输出,但您的训练集可能有 < 1 或 > 30 classes。
此外,请注意在 torch 中 classes 的索引为 1 到 N。
我想在 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)
您的目标 class 似乎超出了范围。您将网络定义为具有 30 classes 作为网络的输出,但您的训练集可能有 < 1 或 > 30 classes。
此外,请注意在 torch 中 classes 的索引为 1 到 N。