当前位置:  开发笔记 > 开发工具 > 正文

如果可以激活多个输出,softmax层的替代品是什么?

如何解决《如果可以激活多个输出,softmax层的替代品是什么?》经验,为你挑选了1个好方法。



1> ginge..:

您的问题是多标签分类之一,在Keras的上下文中,我们将对此进行讨论,例如:https://github.com/fchollet/keras/issues/741

简而言之,keras中建议的解决方案是用sigmoid层替换softmax层,并使用binary_crossentropy作为成本函数.

该线程的一个例子:

# Build a classifier optimized for maximizing f1_score (uses class_weights)

clf = Sequential()

clf.add(Dropout(0.3))
clf.add(Dense(xt.shape[1], 1600, activation='relu'))
clf.add(Dropout(0.6))
clf.add(Dense(1600, 1200, activation='relu'))
clf.add(Dropout(0.6))
clf.add(Dense(1200, 800, activation='relu'))
clf.add(Dropout(0.6))
clf.add(Dense(800, yt.shape[1], activation='sigmoid'))

clf.compile(optimizer=Adam(), loss='binary_crossentropy')

clf.fit(xt, yt, batch_size=64, nb_epoch=300, validation_data=(xs, ys), class_weight=W, verbose=0)

preds = clf.predict(xs)

preds[preds>=0.5] = 1
preds[preds<0.5] = 0

print f1_score(ys, preds, average='macro')

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有