基於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)
相關文章
- 《深度學習案例精粹:基於TensorFlow與Keras》案例集用於深度學習訓練深度學習Keras
- 基於Keras和Gunicorn+Flask部署深度學習模型KerasFlask深度學習模型
- 飛槳圖學習大模型訓練框架大模型框架
- 初創公司如何訓練大型深度學習模型深度學習模型
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (5) --- 融合框架原始碼深度學習分散式框架
- TensorFlow2.0教程-使用keras訓練模型Keras模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (13) --- 彈性訓練之 Driver原始碼深度學習分散式框架
- 如何將keras訓練的模型轉換成tensorflow lite模型Keras模型
- 【tf.keras】tf.keras載入AlexNet預訓練模型Keras模型
- 讀書筆記(四):深度學習基於Keras的Python實踐筆記深度學習KerasPython
- keras中VGG19預訓練模型的使用Keras模型
- [Python急救站]基於Transformer Models模型完成GPT2的學生AIGC學習訓練模型PythonORM模型GPTAIGC
- 預約直播 | 基於預訓練模型的自然語言處理及EasyNLP演算法框架模型自然語言處理演算法框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (8) --- on spark原始碼深度學習分散式框架Spark
- [原始碼解析] 深度學習分散式訓練框架 horovod (7) --- DistributedOptimizer原始碼深度學習分散式框架
- Keras vs PyTorch:誰是「第一」深度學習框架?KerasPyTorch深度學習框架
- 運用預訓練 Keras 模型來處理影像分類請求,學習如何使用從 Keras 建立 SavedModelKeras模型
- keras框架下的深度學習(一)手寫體識別Keras框架深度學習
- 深度學習訓練過程中的學習率衰減策略及pytorch實現深度學習PyTorch
- 基於深度學習模型Wide&Deep的推薦深度學習模型IDE
- 用 Java 訓練深度學習模型,原來可以這麼簡單!Java深度學習模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (10) --- run on spark原始碼深度學習分散式框架Spark
- 深度學習 | 訓練網路trick——mixup深度學習
- 自我學習與理解:keras框架下的深度學習(三)迴歸問題Keras框架深度學習
- CANN訓練營第三季_基於昇騰PyTorch框架的模型訓練調優_讀書筆記PyTorch框架模型筆記
- 深度學習keras筆記深度學習Keras筆記
- [原始碼解析] 深度學習分散式訓練框架 horovod (16) --- 彈性訓練之Worker生命週期原始碼深度學習分散式框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (14) --- 彈性訓練發現節點 & State原始碼深度學習分散式框架
- 試用阿里雲GPU伺服器進行深度學習模型訓練阿里GPU伺服器深度學習模型
- [原始碼解析] 深度學習分散式訓練框架 horovod (15) --- 廣播 & 通知原始碼深度學習分散式框架
- [原始碼解析] 深度學習分散式訓練框架 horovod (11) --- on spark --- GLOO 方案原始碼深度學習分散式框架Spark
- [原始碼解析] 深度學習分散式訓練框架 horovod (9) --- 啟動 on spark原始碼深度學習分散式框架Spark
- 機器學習 | 深入SVM原理及模型推導(一)機器學習模型
- TensorFlow、Keras、CNTK...到底哪種深度學習框架更好用?Keras深度學習框架
- 如何基於元學習方法進行有效的模型訓練?四篇論文詳細剖析元模型的學習原理和過程模型
- 百度基於 GPU 的超大規模離散模型訓練框架 PaddleBox 與 FeaBoxGPU模型框架
- Keras深度神經框架Keras框架