我将尝试在一个高层次上解释我的问题,我希望我能够更好地理解这一切背后的ML。你知道吗
我正在处理从音频文件中提取的聚合特征,因此每个特征向量的大小(1xN)。输出将是一个单一的情绪标签,积极的,中立的,或消极的。我将它们分别映射到2、1、0(设计上标签是离散的,但也许我可以使它连续?)你知道吗
我使用的数据集90%为中性,6%为阴性,4%为阳性,我将它们分为train/dev/test。我用PyTorch编写了一个基本的DNN,并且一直在使用CrossEntropyLoss和SGD(带nesterov momentum)进行训练。我遇到的问题是,网络在只看到约10%的数据后,开始只预测网络标签。类权重收敛为
tensor([[-0.9255],
[ 1.9352],
[-1.1473]])
不管你输入什么1xN特征向量。如能就如何解决这一问题提供指导,我将不胜感激。你知道吗
该体系结构可供参考
DNNModel(
(in_layer): Linear(in_features=89, out_features=1024, bias=True)
(fcs): Sequential(
(0): Linear(in_features=1024, out_features=512, bias=True)
(1): Linear(in_features=512, out_features=256, bias=True)
(2): Linear(in_features=256, out_features=128, bias=True)
)
(out_layer): Sequential(
(0): SequenceWise (
Linear(in_features=128, out_features=3, bias=True))
)
)
def forward(self, x):
x = F.relu(self.in_layer(x))
for fc in self.fcs:
x = F.relu(fc(x))
x = self.out_layer(x)
return x
不确定NN是否真的有意义——是每个隐藏层之间的关系还是偏差?或者别的什么。谢谢!你知道吗
编辑:移到数据科学堆栈交换,因为这在那里更相关。link
有各种各样的方法可以解决这个问题问题。你呢可以尝试重新采样数据集。你知道吗
这可以通过两种方式实现:
这可能是最简单的方法,但如果你愿意尝试,你可以尝试惩罚模式。你知道吗
在惩罚模型中,我们对模型施加了额外的成本,使其在分类过程中对少数阶级犯错误训练。这个额外的成本或惩罚可以使模型更加关注少数群体同学们。在那里是算法的惩罚版本,如惩罚支持向量机等。你知道吗
有关惩罚支持向量机算法的更多信息,请访问以下链接: [https://stats.stackexchange.com/questions/122095/does-support-vector-machine-handle-imbalanced-dataset][1]
相关问题 更多 >
编程相关推荐