我试图将深度学习应用到一个目标班(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)之间的不平衡就是一个例子。我在我的真实数据集中有相似的比例。