我试图将深度学习应用到一个目标班(10万、500万、90万、30万)之间的高班级不平衡的多班级分类问题上。我想写一个自定义丢失函数。

这是我目前的型号:

model = Sequential()

model.add(LSTM(

units=10, # number of units returned by LSTM

return_sequences=True,

input_shape=(timestamps,nb_features),

dropout=0.2,

recurrent_dropout=0.2

)

)

model.add(TimeDistributed(Dense(1)))

model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(units=nb_classes,

activation='softmax'))

model.compile(loss="categorical_crossentropy",

metrics = ['accuracy'],

optimizer='adadelta')

不幸的是,所有预测都属于1类!!!!模型总是预测任何输入为1…

感谢任何关于我如何解决这个任务的建议。

更新:

输入数据的尺寸:

94981 train sequences

29494 test sequences

X_train shape: (94981, 20, 18)

X_test shape: (29494, 20, 18)

y_train shape: (94981, 4)

y_test shape: (29494, 4)

基本上在列车数据中,我有94981个样本。每个样本包含一个20个时间戳的序列。共有18个功能。

目标等级(10K、500K、90K、30K)之间的不平衡就是一个例子。我在我的真实数据集中有相似的比例。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐