我试图将深度学习应用到一个目标班(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

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐