多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > DeepLearning tutorial(6)易用的深度學習框架Keras簡介

DeepLearning tutorial(6)易用的深度學習框架Keras簡介

來源:程序員人生   發布時間:2015-07-30 14:19:37 閱讀次數:4813次

之前我1直在使用Theano,前面5篇Deeplearning相干的文章也是學習Theano的1些筆記,當時已覺得Theano用起來略顯麻煩,有時想實現1個新的結構,就要花很多時間去編程,所以想過將代碼模塊化,方便重復使用,但由于實在太忙沒有時間去做。最近發現了1個叫做Keras的框架,跟我的想法不謀而合,用起來特別簡單,合適快速開發。(其實還有很多其他的深度學習框架都是比較容易用的。)

1. Keras簡介

Keras是基于Theano的1個深度學習框架,它的設計參考了Torch,用Python語言編寫,是1個高度模塊化的神經網絡庫,支持GPU和CPU。使用文檔在這:http://keras.io/,這個框架貌似是剛剛火起來的,使用上的問題可以到github提issue:https://github.com/fchollet/keras 

下面簡單介紹1下怎樣使用Keras,以Mnist數據庫為例,編寫1個CNN網絡結構,你將會發現特別簡單。

2. Keras里的模塊介紹

  • Optimizers

    顧名思義,Optimizers包括了1些優化的方法,比如最基本的隨機梯度降落SGD,另外還有Adagrad、Adadelta、RMSprop、Adam,1些新的方法以后也會被不斷添加進來。

    keras.optimizers.SGD(lr=0.01, momentum=0.9, decay=0.9, nesterov=False)

    上面的代碼是SGD的使用方法,lr表示學習速率,momentum表示動量項,decay是學習速率的衰減系數(每一個epoch衰減1次),Nesterov的值是False或True,表示使不使用Nesterov momentum。其他的請參考文檔。

  • Objectives

    這是目標函數模塊,keras提供了mean_squared_error,mean_absolute_error ,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy這幾種目標函數。

    這里binary_crossentropy 和 categorical_crossentropy也就是logloss

  • Activations

    這是激活函數模塊,keras提供了linear、sigmoid、hard_sigmoid、tanh、softplus、relu、softplus,另外softmax也放在Activations模塊里(我覺得放在layers模塊里更公道些)。另外,像LeakyReLU和PReLU這類比較新的激活函數,keras在keras.layers.advanced_activations模塊里提供。

  • Initializations

    這是參數初始化模塊,在添加layer的時候調用init進行初始化。keras提供了uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal這幾種。

  • layers

    layers模塊包括了core、convolutional、recurrent、advanced_activations、normalization、embeddings這幾種layer。

    其中core里面包括了flatten(CNN的全連接層之前需要把2維特點圖flatten成為1維的)、reshape(CNN輸入時將1維的向量弄成2維的)、dense(就是隱藏層,dense是稠密的意思),還有其他的就不介紹了。convolutional層基本就是Theano的Convolution2D的封裝。

  • Preprocessing

    這是預處理模塊,包括序列數據的處理,文本數據的處理,圖象數據的處理。重點看1下圖象數據的處理,keras提供了ImageDataGenerator函數,實現data augmentation,數據集擴增,對圖象做1些彈性變換,比如水平翻轉,垂直翻轉,旋轉等。

  • Models

    這是最主要的模塊,模型。上面定義了各種基本組件,model是將它們組合起來,下面通過1個實例來講明。

3.1個實例:用CNN分類Mnist

  • 數據下載

    Mnist數據在其官網上有提供,但是否是圖象格式的,由于我們通常都是直接處理圖象,為了以后程序能復用,我把它弄成圖象格式的,這里可以下載:http://pan.baidu.com/s/1qCdS6,共有42000張圖片。

  • 讀取圖片數據

    keras要求輸入的數據格式是numpy.array類型(numpy是1個python的數值計算的庫),所以需要寫1個腳本來讀入mnist圖象,保存為1個4維的data,還有1個1維的label,代碼:

#coding:utf⑻ """ Author:wepon Source:https://github.com/wepe file:data.py """ import os from PIL import Image import numpy as np #讀取文件夾mnist下的42000張圖片,圖片為灰度圖,所以為1通道, #如果是將彩色圖作為輸入,則將1替換為3,圖象大小28*28 def load_data(): data = np.empty((42000,1,28,28),dtype="float32") label = np.empty((42000,),dtype="uint8") imgs = os.listdir("./mnist") num = len(imgs) for i in range(num): img = Image.open("./mnist/"+imgs[i]) arr = np.asarray(img,dtype="float32") data[i,:,:,:] = arr label[i] = int(imgs[i].split('.')[0]) return data,label
  • 構建CNN,訓練

    短短210多行代碼,構建1個3個卷積層的CNN,直接讀下面的代碼吧,有注釋,很容易讀懂:

#導入各種用到的模塊組件 from __future__ import absolute_import from __future__ import print_function from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation, Flatten from keras.layers.advanced_activations import PReLU from keras.layers.convolutional import Convolution2D, MaxPooling2D from keras.optimizers import SGD, Adadelta, Adagrad from keras.utils import np_utils, generic_utils from six.moves import range from data import load_data #加載數據 data, label = load_data() print(data.shape[0], ' samples') #label為0~9共10個種別,keras要求格式為binary class matrices,轉化1下,直接調用keras提供的這個函數 label = np_utils.to_categorical(label, 10) ############### #開始建立CNN模型 ############### #生成1個model model = Sequential() #第1個卷積層,4個卷積核,每一個卷積核大小5*5。1表示輸入的圖片的通道,灰度圖為1通道。 #border_mode可以是valid或full,具體看這里說明:http://deeplearning.net/software/theano/library/tensor/nnet/conv.html#theano.tensor.nnet.conv.conv2d #激活函數用tanh #你還可以在model.add(Activation('tanh'))后加上dropout的技能: model.add(Dropout(0.5)) model.add(Convolution2D(4, 1, 5, 5, border_mode='valid')) model.add(Activation('tanh')) #第2個卷積層,8個卷積核,每一個卷積核大小3*3。4表示輸入的特點圖個數,等于上1層的卷積核個數 #激活函數用tanh #采取maxpooling,poolsize為(2,2) model.add(Convolution2D(8,4, 3, 3, border_mode='valid')) model.add(Activation('tanh')) model.add(MaxPooling2D(poolsize=(2, 2))) #第3個卷積層,16個卷積核,每一個卷積核大小3*3 #激活函數用tanh #采取maxpooling,poolsize為(2,2) model.add(Convolution2D(16, 8, 3, 3, border_mode='valid')) model.add(Activation('tanh')) model.add(MaxPooling2D(poolsize=(2, 2))) #全連接層,先將前1層輸出的2維特點圖flatten為1維的。 #Dense就是隱藏層。16就是上1層輸出的特點圖個數。4是根據每一個卷積層計算出來的:(28⑸+1)得到24,(24⑶+1)/2得到11,(11⑶+1)/2得到4 #全連接有128個神經元節點,初始化方式為normal model.add(Flatten()) model.add(Dense(16*4*4, 128, init='normal')) model.add(Activation('tanh')) #Softmax分類,輸出是10種別 model.add(Dense(128, 10, init='normal')) model.add(Activation('softmax')) ############# #開始訓練模型 ############## #使用SGD + momentum #model.compile里的參數loss就是損失函數(目標函數) sgd = SGD(l2=0.0,lr=0.05, decay=1e⑹, momentum=0.9, nesterov=True) model.compile(loss='categorical_crossentropy', optimizer=sgd,class_mode="categorical") #調用fit方法,就是1個訓練進程. 訓練的epoch數設為10,batch_size為100. #數據經過隨機打亂shuffle=True。verbose=1,訓練進程中輸出的信息,0、1、23種方式都可以,無關緊要。show_accuracy=True,訓練時每個epoch都輸出accuracy。 #validation_split=0.2,將20%的數據作為驗證集。 model.fit(data, label, batch_size=100,nb_epoch=10,shuffle=True,verbose=1,show_accuracy=True,validation_split=0.2) #fit方法在到達設定的nb_epoch時結束,并且自動地保存了效果最好的model,以后你可以調用model.evaluate()方法對測試數據進行測試, #還有model.predict_classes,model.predict_proba等方法,具體請看文檔。
  • 代碼使用與結果

代碼放在我github的機器學習倉庫里:https://github.com/wepe/MachineLearning,非github用戶直接點右下的DownloadZip。

在/DeepLearning Tutorials/keras_usage目錄下包括data.py,cnn.py兩份代碼,下載Mnist數據后解壓到該目錄下,運行cnn.py這份文件便可。

結果以下所示,在Epoch 9到達了0.98的訓練集辨認率和0.97的驗證集辨認率:

這里寫圖片描述


轉載請注明出處:http://blog.csdn.net/u012162613/article/details/45397033

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本精高清区一 | 无码日韩精品一区二区免费 | xxx久久| 亚洲综合网在线观看 | 午夜啪啪网站 | 国产午夜不卡在线观看视频666 | 性久久久久久久久 | 国产大学生露脸激情 | 中文字幕2021 | 国产一级毛片欧美视频 | 国产一区二区三区夜色 | 国产精品亚洲综合一区 | 亚洲激情校园 | 精品国产96亚洲一区二区三区 | 精品久久中文网址 | 俺来也俺去啦久久综合网 | 亚洲精品久久一区毛片 | 日韩国产欧美成人一区二区影院 | 五月天在线观看免费视频播放 | 亚洲成a人片在线观看播放 亚洲成a人片在线观看精品 | 小说区图片区亚洲 | 久久女人天堂 | www.av网站| 国产偷啪视频一区 | 欧美性美| 日本护士xxxx| 亚洲欧美日韩久久一区 | 亚洲精品自在线拍 | 美毛片 | 欧美啊v在线 | 国产精久久一区二区三区 | 成年人免费看视频 | 一级黄色免费片 | 黄色aa视频 | 日本欧美亚洲 | 国产suv精品 | 欧美日韩亚洲国内综合网俺 | 九九精品久久久久久久久 | 国产欧美一区二区三区免费看 | 亚洲人成伊人成综合网久久 | 五月天视频网 |