中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Keras中Sequential和Model的案例分析

發布時間:2020-06-28 11:59:30 來源:億速云 閱讀:314 作者:清晨 欄目:開發技術

小編給大家分享一下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的案例分析有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三江| 炉霍县| 博白县| 孟连| 石渠县| 长岭县| 沅江市| 宜兴市| 克山县| 鸡泽县| 昌吉市| 胶南市| 吉木萨尔县| 阜南县| 武冈市| 伊宁市| 天峻县| 即墨市| 辉县市| 苍梧县| 濮阳县| 曲沃县| 苍南县| 长乐市| 崇文区| 久治县| 织金县| 和田市| 丹棱县| 始兴县| 东平县| 武川县| 田林县| 石景山区| 九龙坡区| 永丰县| 武邑县| 西充县| 巴里| 岱山县| 易门县|