【问题标题】:LSTM with varying k-hot encoded vector具有不同 k-hot 编码向量的 LSTM
【发布时间】:2017-04-19 06:21:48
【问题描述】:
来自LSTM with keras的后续问题
在这个例子中,一个热编码向量用于使用 LSTM 执行分类。这个 LSTM 如何用于执行 k-hot 编码,其中k 值不是一个常数值。例如,k 可能是 3 或 k 可能是 5 或 k 在某些样本中可能是其他一些变化的整数?
【问题讨论】:
标签:
python
machine-learning
tensorflow
neural-network
keras
【解决方案1】:
这是一个多类分类任务。为了解决这个问题,您需要:
-
将输出激活设置为 sigmoid:
model.add(Dense(150, activation='sigmoid'))
-
将目标设置为指标编码:
如果你例如4 个类,对于给定的示例集类 0 和 2,您的输出应该是 [1, 0, 1, 0]
-
使用以下损失:
import keras.backend as K
def multiclass_loss(y_true, y_pred):
EPS = 1e-5
y_pred = K.clip(y_pred, EPS, 1 - EPS)
return -K.mean((1 - y_true) * K.log(1 - y_pred) + y_true * K.log(y_pred))
model.compile(optimizer=..., loss=multiclass_loss)