在Keras中使用标签Powerset时,如何通过时期和批处理大小



我有一个多标签问题,并且有了一些研究,我能够与ML算法结合使用标签Powerset。现在,我想将标签Powerset与神经网络一起使用,根据官方网站,我可以使用标签Powerset。但是我无法理解如何修改现有代码以使用标签PowerSet。

我想知道我们如何通过模型的拟合函数传递epoch或batch_size或任何其他参数。

由于我有一个多标签问题,所以我使用了Sklearn的多贴贝甲素化器,因此我的每个目标行看起来像这样[1,0,0,1,0,0,0,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,0]这个。

KERAS_PARAMS是keras scikit包装器的参数。它的文档相当稀疏。

基本上,它似乎是您将通过的参数,例如,到keras.fit

KERAS_PARAMS = dict(epochs=10, batch_size=100, verbose=0)

通过阅读文档,在我看来,LabelPowerset通过创建类排列将多标签问题转换为多类问题。您可以考虑仅将本机keras解决方案用于多标签问题而不是使用包装器。

以下教程似乎是合理的:https://medium.com/@vijayabhaskar96/multi-label-imimage-classification-tutorial-with-keras-imagedatagenerator-cd541f541f8ef24

关键区别在于您的输出层应具有sigmoid激活而不是softmax,并且损失应为binary_crossentrophy,而不是分类。

相关内容

  • 没有找到相关文章

最新更新