【发布时间】:2019-11-06 21:52:43
【问题描述】:
我有一个多标签问题,通过一些研究,我能够将 Label powerset 与 ML 算法结合使用。现在我想将 Label powerset 与神经网络一起使用,根据 official website 我可以使用 Label powerset。但我无法理解如何修改现有代码才能使用 Label Powerset。
我想知道我们如何传递 epoch 或 batch_size 或模型的 fit 函数中传递的任何其他参数。
由于我有一个多标签问题,我使用了 sklearn 的 MultiLabelBinarizer,所以我的每个目标行看起来像这样 [1,0,0,1,0,0,0,0,0,0,0,0] .
最后,如果有人可以在下面的行中向我解释什么是 KERAS_PARAMS 和 Keras():
def create_model_multiclass(input_dim, output_dim):
# create model
model = Sequential()
model.add(Dense(8, input_dim=input_dim, activation='relu'))
model.add(Dense(output_dim, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
clf = LabelPowerset(classifier=Keras(create_model_multiclass, True, KERAS_PARAMS), require_dense=[True,True])
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
下面是我现有的神经网络代码
cnn_model = Sequential()
cnn_model.add(Dropout(0.5))
cnn_model.add(Conv1D(25,7,activation='relu'))
cnn_model.add(MaxPool1D(2))
cnn_model.add(Dropout(0.2))
cnn_model.add(Conv1D(25,7,activation='relu'))
cnn_model.add(MaxPool1D(2))
cnn_model.add(Flatten())
cnn_model.add(Dense(25,activation='relu'))
cnn_model.add(Dense(12,activation='softmax'))
cnn_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
history = cnn_model.fit(X_train, y_train, validation_data=(X_test,y_test), batch_size=32, epochs=180,verbose=1)
plot_history(history)
predictions = cnn_model.predict(X_test)
我希望我的输出行看起来只有 [1,0,0,1,0,0,0,0,0,0,0,0],因为稍后我将使用 MultiLabelBinarizer 进行逆变换这个。
【问题讨论】:
标签: keras neural-network deep-learning multilabel-classification scikit-multilearn