簡體   English   中英

如何將傳統分類器 (SVM) 添加到我的 CNN model

[英]How to add a traditional classifier(SVM) to my CNN model

這是我的 model

model=Sequential()
model.add(Xception(weights='imagenet',input_shape=(224,224,3),include_top=False))
model.add(GlobalAveragePooling2D())
model.add(Dense(4096,activation='relu',name='fc1'))
model.add(Dense(4096,activation='relu',name='fc2'))
model.add(Dense(1000,activation='relu',name='fc3'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid',name='fc4'))
model.layers[0].trainable=False

我想在這個 model 中將 svm 分類器作為我的最終分類器,那我該怎么做呢? 還有另一個問題我想知道某個輸入的預測 class 所以當我使用

model.predict(x_test)

它只給了我概率,所以我怎么也能解決這個問題

您可以使用 neural.network 作為特征提取器,並將最后一層的輸出提取到 SVM 中。 嘗試以下:

model=Sequential()
model.add(Xception(weights='imagenet',input_shape=(224,224,3),include_top=False))
model.add(GlobalAveragePooling2D())
model.add(Dense(4096,activation='relu',name='fc1'))
model.add(Dense(4096,activation='relu',name='fc2'))
model.add(Dense(1000,activation='relu',name='fc3'))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid',name='fc4'))

model.compile(loss="categorical_crossentropy", optimizer="adam")
model.summary()

model.fit(X,y, epochs=10)

model.pop() # this will remove the last layer
model.summary() # check the network 

feature_mapping = model(X) 

from sklearn import svm

clf = svm.SVC()
clf.fit(feature_mapings, y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM