您好,登錄后才能下訂單哦!
小編給大家分享一下Keras中Sequential和Model的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
在Keras中有兩種深度學習的模型:序列模型(Sequential)和通用模型(Model)。差異在于不同的拓撲結構。
序列模型 Sequential
序列模型各層之間是依次順序的線性關系,模型結構通過一個列表來制定。
from keras.models import Sequential from keras.layers import Dense, Activation layers = [Dense(32, input_shape = (784,)), Activation('relu'), Dense(10), Activation('softmax')] model = Sequential(layers)
或者逐層添加網絡結構
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential() model.add(Dense(32, input_shape = (784,))) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('softmax'))
通用模型Model
通用模型可以設計非常復雜、任意拓撲結構的神經網絡,例如有向無環網絡、共享層網絡等。相比于序列模型只能依次線性逐層添加,通用模型能夠比較靈活地構造網絡結構,設定各層級的關系。
from keras.layers import Input, Dense from keras.models import Model # 定義輸入層,確定輸入維度 input = input(shape = (784, )) # 2個隱含層,每個都有64個神經元,使用relu激活函數,且由上一層作為參數 x = Dense(64, activation='relu')(input) x = Dense(64, activation='relu')(x) # 輸出層 y = Dense(10, activation='softmax')(x) # 定義模型,指定輸入輸出 model = Model(input=input, output=y) # 編譯模型,指定優化器,損失函數,度量 model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) # 模型擬合,即訓練 model.fit(data, labels)
補充知識:keras神經網絡,Sequential序貫模型(二分類、多分類)
1 Sequential參數
model = Sequential() model.add(Dense(32, input_dim=78))
解釋:
Sequential 的第一個關于輸入數據shape的參數,后邊的各個層則可以自動推到出中間數據的shape
01 傳遞一個input_shape的關鍵字參數給第一層,如果填入None則表示此位置可能是任何正整數。數據的batch大小不應包含在其中。
02 有些2D層,如Dense,支持通過指定其輸入維度input_dim來隱含的指定輸入數據shape,是一個Int類型的數據。一些3D的時域層支持通過參數input_dim和input_length來指定輸入shape。
03 如果你需要為輸入指定一個固定大小的batch_size(常用于stateful RNN網絡),可以傳遞batch_size參數到一個層中,例如你想指定輸入張量的batch大小是32,數據shape是(6,8),則你需要傳遞batch_size=32和input_shape=(6,8)。
2、compile配置學習過程
model.compile(optimizer='rmspropy',loss='categorical_crossentropy',metrics=['accuracy'])
01 優化器optimizer:
該參數可指定為已預定義的優化器名,如rmsprop、adagrad,或一個Optimizer類的對象。
02 損失函數loss:
該參數為模型試圖最小化的目標函數,它可為預定義的損失函數名,如categorical_crossentropy、mse,也可以為一個損失函數。
03 指標列表metrics:
對分類問題,我們一般將該列表設置為metrics=['accuracy']。指標可以是一個預定義指標的名字,也可以是一個用戶定制的函數.指標函數應該返回單個張量,或一個完成metric_name - > metric_value映射的字典.
3、案例
01 基于多層感知器Softmax多分類(圖片)
from keras.models import Sequential from keras.layers import Dense,Dropout,Activation from keras.optimizers import SGD import keras #abd # Generate dummy data import numpy as np x_train=np.random.random((1000,20)) y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10) x_test=np.random.random((100,20)) y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10) model=Sequential() # Dense(64) is a fully-connected Layer with 64 hidden units. # in the first layer ,you must specify the expected input data shape; # here,20-dimensional vectors. model.add(Dense(64,activation='relu',input_dim=20)) model.add(Dropout(0.5)) model.add(Dense(64,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(10,activation='softmax')) sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True) model.compile(loss='categorical_crossentropy', # 損失函數 optimizer=sgd, # metrics=['accuracy'] # 精確度,評估模型在訓練和測試時的網絡性能的指標。 ) model.fit(x_train,y_train,epochs=20,batch_size=128) # batch_size 整數,指定進行梯度下降時每個批次包含的樣本數訓練時一個批次的樣本 # 會被計算一次梯度下降,使目標函數進行一步優化 # epochs;訓練20次,整數,訓練終止時候的epoch值 score=model.evaluate(x_test,y_test,batch_size=128) # 評估函數 ,本函數返回一個測試誤差的標量值(如果模型沒有其他評價指標)。
02 MLP的二分類
import numpy as np from keras.models import Sequential from keras.layers import Dense,Dropout x_train=np.random.random((1000,20)) y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10) x_test=np.random.random((100,20)) y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10) model=Sequential() model.add(Dense(64,input_dim=20,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(64,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1,activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) model.fit(x_train,y_train, epoches=20, batch_size=128) score=model.evaluate(x_test,y_test,batch_size=128)
看完了這篇文章,相信你對Keras中Sequential和Model的案例分析有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。