我正在研究的特定型号有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.]