具有多个(sigmoid)二进制输出的类权重

时间:2017-06-28 07:28:45

标签: python tensorflow keras

我有一个简单的模型运行;

from keras.layers import Dense, LSTM, Dropout,
rnn_nodes = 64
num_outs=1

model = Sequential()
model.add(LSTM(rnn_nodes, input_shape=(X.shape[1], X.shape[2]),return_sequences=False))
model.add(Dense(num_outs, use_bias=False, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam')
history = model.fit(X, y, class_weight=class_weight)

这里y是{0,1}中的二进制。如果num_outs = 1,那么

class_1_bias = y.mean(axis=0)
class_weight = {0 : class_1_bias, 1 : 1.0 - class_1_bias}

会给我我想要的东西,并按预期工作。但是如果num_outs> 1,每个输出都有不同的偏见我想在训练中反映出来,我似乎无法将其添加到模型中。 num_outs可能很大,因此训练多个单输出节点模型不是我想要做的。

如果有人对此有任何提示,我很想知道。如果我在同一时间解决问题,我会发布任何答案。

谢谢, 本。

0 个答案:

没有答案