【问题标题】:How to use SVM to classify while the features are extracted using CNN?如何在使用 CNN 提取特征的同时使用 SVM 进行分类?
【发布时间】:2020-10-19 10:16:57
【问题描述】:
   conv12 = Conv2D(32, (3, 3), activation='relu', padding='same')(up12)
   conv12 = Dropout(0.3)(conv12)
   conv12 = Conv2D(32, (3, 3), activation='relu', padding='same')(conv12)
   
   conv13 = Conv2D(1, (1, 1), activation='sigmoid')(conv12)

   model = Model(inputs=[inputs], outputs=[conv13])

   model.compile(optimizer=Adam(lr=.00045), loss=dice_coef_loss, metrics=[dice_coef])

   return model

在 conv13 层之后我想使用 SVM,我该怎么做?我对此很陌生,无法弄清楚。

【问题讨论】:

    标签: python machine-learning classification svm conv-neural-network


    【解决方案1】:

    您的神经网络在给定输入的情况下产生输出(我假设是图像)。当您将其设置为来自conv13 层的参数时,此输出将是一个特定大小的向量。您现在可以将此输出视为 SVM 分类器的输入。但是,您无需在此步骤中坚持使用 Keras,因为像 scikit-learn 这样的库已经实现了一种更简单的方法。

    假设您的 CNN 生成一组向量,例如 X =[95, 25, ..., 45, 24] 作为输出。如果你有一组标签y = {0, 1} 那么你可以这样做:

    from sklearn.svm import SVC
    
    clf = SVC() # Play with hyperparameters.
    
    clf.predict([[95, 25, ..., 45, 24]]) # Output: array([1])
    

    见:https://scikit-learn.org/stable/modules/svm.html

    【讨论】:

    • 很抱歉打扰您。我很难实施它。 y = [0, 1] svm = SVR(kernel="rbf", gamma="scale", C=1.0) svm.fit(conv13, y) 我在这里做错了什么?当我运行上面的代码时,我得到这个 __array__() 需要 1 个位置参数,但给出了 2 个。我是菜鸟。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 2013-04-23
    • 2018-10-25
    • 2012-04-19
    • 2017-09-19
    • 2016-09-02
    • 2018-06-04
    • 2016-01-24
    相关资源
    最近更新 更多