基於Theano的深度學習框架keras及配合SVM訓練模型
版權宣告:如需轉載,請註明出處http://blog.csdn.net/a819825294
1.介紹
Keras是基於Theano的一個深度學習框架,它的設計參考了Torch,用Python語言編寫,是一個高度模組化的神經網路庫,支援GPU和CPU。keras官方文件地址
地址
2.流程
先使用CNN進行訓練,利用Theano函式將CNN全連線層的值取出來,給SVM進行訓練
3.結果示例
因為這裡只是一個演示keras&SVM的demo,未對引數進行過多的嘗試,結果一般
4.程式碼
由於keras文件、程式碼更新,目前網上很多程式碼都不能使用,下面貼上我的程式碼,可以直接執行
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation,Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.optimizers import SGD
from keras.datasets import mnist
from keras.layers import BatchNormalization
from sklearn.svm import SVC
import theano
from keras.utils import np_utils
def svc(traindata,trainlabel,testdata,testlabel):
print("Start training SVM...")
svcClf = SVC(C=1.0,kernel="rbf",cache_size=3000)
svcClf.fit(traindata,trainlabel)
pred_testlabel = svcClf.predict(testdata)
num = len(pred_testlabel)
accuracy = len([1 for i in range(num) if testlabel[i]==pred_testlabel[i]])/float(num)
print("cnn-svm Accuracy:",accuracy)
#each add as one layer
model = Sequential()
#1 .use convolution,pooling,full connection
model.add(Convolution2D(5, 3, 3,border_mode='valid',input_shape=(1, 28, 28),activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(10, 3, 3,activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(100,activation='tanh')) #Full connection
model.add(Dense(10,activation='softmax'))
#2 .just only user full connection
# model.add(Dense(100,input_dim = 784, init='uniform',activation='tanh'))
# model.add(Dense(100,init='uniform',activation='tanh'))
# model.add(Dense(10,init='uniform',activation='softmax'))
# sgd = SGD(lr=0.2, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer='sgd', loss='categorical_crossentropy')
(X_train, y_train), (X_test, y_test) = mnist.load_data()
#change data type,keras category need ont hot
#2 reshape
#X_train = X_train.reshape(X_train.shape[0],X_train.shape[1]*X_train.shape[2]) #X_train.shape[0] 60000 X_train.shape[1] 28 X_train.shape[2] 28
#1 reshape
X_train = X_train.reshape(X_train.shape[0],1,X_train.shape[1],X_train.shape[2])
Y_train = np_utils.to_categorical(y_train, 10)
#new label for svm
y_train_new = y_train[0:42000]
y_test_new = y_train[42000:]
#new train and test data
X_train_new = X_train[0:42000]
X_test = X_train[42000:]
Y_train_new = Y_train[0:42000]
Y_test = Y_train[42000:]
model.fit(X_train_new, Y_train_new, batch_size=200, nb_epoch=100,shuffle=True, verbose=1, show_accuracy=True, validation_split=0.2)
print("Validation...")
val_loss,val_accuracy = model.evaluate(X_test, Y_test, batch_size=1,show_accuracy=True)
print "val_loss: %f" %val_loss
print "val_accuracy: %f" %val_accuracy
#define theano funtion to get output of FC layer
get_feature = theano.function([model.layers[0].input],model.layers[5].get_output(train=False),allow_input_downcast=False)
FC_train_feature = get_feature(X_train_new)
FC_test_feature = get_feature(X_test)
svc(FC_train_feature,y_train_new,FC_test_feature,y_test_new)
相關文章
- Keras:基於Theano和TensorFlow的深度學習庫Keras深度學習
- 《深度學習案例精粹:基於TensorFlow與Keras》案例集用於深度學習訓練深度學習Keras
- 學習SVM(一) SVM模型訓練與分類的OpenCV實現模型OpenCV
- 基於Keras和Gunicorn+Flask部署深度學習模型KerasFlask深度學習模型
- 基於Keras/Python的深度學習模型Dropout正則項KerasPython深度學習模型
- 飛槳圖學習大模型訓練框架大模型框架
- 初創公司如何訓練大型深度學習模型深度學習模型
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- 深度學習基礎 - 基於Theano-MLP的字元識別實驗(MNIST)深度學習字元
- 【機器學習PAI實踐十】深度學習Caffe框架實現影象分類的模型訓練機器學習AI深度學習框架模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (5) --- 融合框架原始碼深度學習分散式框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (13) --- 彈性訓練之 Driver原始碼深度學習分散式框架
- TensorFlow2.0教程-使用keras訓練模型Keras模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (8) --- on spark原始碼深度學習分散式框架Spark
- 【tf.keras】tf.keras載入AlexNet預訓練模型Keras模型
- 雲端計算時代的深度學習訓練深度學習
- 如何將keras訓練的模型轉換成tensorflow lite模型Keras模型
- 手把手:我的深度學習模型訓練好了,然後要做啥?深度學習模型
- 預約直播 | 基於預訓練模型的自然語言處理及EasyNLP演算法框架模型自然語言處理演算法框架
- keras中VGG19預訓練模型的使用Keras模型
- 讀書筆記(四):深度學習基於Keras的Python實踐筆記深度學習KerasPython
- 用 Java 訓練深度學習模型,原來可以這麼簡單!Java深度學習模型
- keras框架下的深度學習(一)手寫體識別Keras框架深度學習
- 深度學習 | 訓練網路trick——mixup深度學習
- 運用預訓練 Keras 模型來處理影像分類請求,學習如何使用從 Keras 建立 SavedModelKeras模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (7) --- DistributedOptimizer原始碼深度學習分散式框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (10) --- run on spark原始碼深度學習分散式框架Spark
- 深度學習keras筆記深度學習Keras筆記
- 一文看懂遷移學習:怎樣用預訓練模型搞定深度學習?遷移學習模型深度學習
- Keras vs PyTorch:誰是「第一」深度學習框架?KerasPyTorch深度學習框架
- 自我學習與理解:keras框架下的深度學習(三)迴歸問題Keras框架深度學習
- [原始碼解析] 深度學習分散式訓練框架 horovod (16) --- 彈性訓練之Worker生命週期原始碼深度學習分散式框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (14) --- 彈性訓練發現節點 & State原始碼深度學習分散式框架
- 深度學習訓練過程中的學習率衰減策略及pytorch實現深度學習PyTorch
- 基於深度學習模型Wide&Deep的推薦深度學習模型IDE
- [原始碼解析] 深度學習分散式訓練框架 horovod (9) --- 啟動 on spark原始碼深度學習分散式框架Spark
- [原始碼解析] 深度學習分散式訓練框架 horovod (11) --- on spark --- GLOO 方案原始碼深度學習分散式框架Spark
- [原始碼解析] 深度學習分散式訓練框架 horovod (15) --- 廣播 & 通知原始碼深度學習分散式框架