【发布时间】:2019-02-07 23:05:57
【问题描述】:
我正在尝试将深度学习应用于目标类(10K、500K、90K、30K)之间高度不平衡的多类分类问题。我想编写一个自定义损失函数。 这是我目前的模型:
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)之间的不平衡只是一个例子。我的真实数据集中的比例相似。
【问题讨论】:
-
发布有关您的数据的更多信息。每个数据点有多少特征?
-
@SzymonMaszke:我更新了我的帖子。