Keras多标签

时间:2017-08-30 18:35:51

标签: keras multilabel-classification

我正在研究的特定型号有34个输出。 我想做的是多标签分类(我认为)

model = Sequential()
model.add(Dense(39, activation='relu', input_shape=(None,39)))
model.add(Dropout(0.1))
model.add(Dense(80, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(80, activation='relu'))
model.add(Dense(34, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='Adam', metrics=["accuracy"])
preds = model.predict(inputVal)
preds = numpy.round(preds)

这是我选择的基本结构,并已针对输出的所有单个案例进行过培训。

例如:[1 0 0 0],[0 1 0 0],[0 0 1 0],[0 0 0 1]

从那时起,我希望它能够预测多个输出标签为真的案例

例如:[0 0 1 1],[0 1 0 1],[1 0 0 1],[0 1 1 0],[1 0 1 0],[1 1 1 1],[1 1 0 1]等

显然,既然我已经训练了它,它对训练好的数据(单输出)效果很好,但是当我去提供应该导致两个数据的数据时,它似乎根本不起作用。输出为1.

有什么想法吗?

输入是介于-1和1之间的数字。

正确输入和输出的示例(来自训练数据):

输入:

[[[-0.12758331 -0.06901649 -0.15094464 -0.17489645 -0.15544203 -0.14380834
   -0.18091092 -0.18897641 -0.17389235 -0.10287826 -0.11684579 -0.11721818
   -0.11573362 -0.14598145 -0.1626517  -0.14156958 -0.16716516 -0.16869128
   -0.05066699 -0.0681744  -0.09898532 -0.02063701 -0.02412137 -0.13948624
   -0.02347892  0.03032054 -0.21435449  0.09052061  0.1380952  -0.02646382
    0.          0.03725522  0.04055786  0.02249375  0.06630866  0.11343291
    0.09429274  0.26084685 -0.1625745 ]]]

输出:

[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.]

0 个答案:

没有答案