欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Keras深度學習模型Sequential和Model詳解

 更新時間:2023年08月23日 10:53:42   作者:小鋒學長生活大爆炸  
這篇文章主要介紹了Keras深度學習模型Sequential和Model詳解,在Keras中有兩種深度學習的模型:序列模型(Sequential)和通用模型(Model),差異在于不同的拓撲結(jié)構(gòu),,需要的朋友可以參考下

Keras模型

在Keras中有兩種深度學習的模型:序列模型(Sequential)和通用模型(Model)。

差異在于不同的拓撲結(jié)構(gòu)。

Sequential序列模型

序列模型各層之間是依次順序的線性關(guān)系(多個網(wǎng)絡層的線性堆疊),模型結(jié)構(gòu)通過一個列表來制定,或者逐層添加網(wǎng)絡結(jié)構(gòu)。

通過將網(wǎng)絡層實例的列表傳遞給 Sequential 的構(gòu)造器,來創(chuàng)建一個 Sequential 模型。

# 導入類
from keras.models import Sequential
from keras.layers import Dense, Activation
# 構(gòu)建Sequential模型
# Model是keras最核心的數(shù)據(jù)結(jié)構(gòu)
model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

也可以簡單地使用 .add() 方法將各層添加到模型中

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('softmax'))

指定輸入數(shù)據(jù)的尺寸 在第一層,模型需要知道它所期望的輸入尺寸。

而在后面的層中,模型可以自動地推斷尺寸。

  • 方式1:傳遞一個input_shape參數(shù)給第一層。它是一個表示尺寸的元組(一個由整數(shù)或None組成的元組,其中None表示可能為任何正整數(shù))。在input_shape中不包含數(shù)據(jù)的batch大小。
  • 方式2:某些2D層,如Dense,支持通過參數(shù)input_dim指定輸入尺寸;某些3D時序?qū)又С謎nput_dim和input_length參數(shù)。
  • 方式3:如果你需要為你的輸入制定一個固定大小的batch(對stateful RNNs很有用),可以傳遞一個batch_size參數(shù)給一個層。如果你同時將batch_size=32和input_shape=(6,8)傳遞給一個層,那么每一批輸入的尺寸就為(32,6,8)。

因此,如下代碼是等價的:

model.add(Dense(32, input_shape=(784,))
model.add(Dense(32, input_dim=784))

模型編譯

在訓練模型之前,通過 compile 方法配置學習過程,接收的參數(shù):

  • 優(yōu)化器optimizer:可以是現(xiàn)有優(yōu)化器的字符串標識符(如rmspropadagrad),也可以是Optimizer類的示例,見optimizers;
  • 損失函數(shù)loss:模型試圖最小化的目標函數(shù)。他可以使現(xiàn)有損失函數(shù)的字符串標識符(如categorical_crossentropymse),也可以是一個目標函數(shù),見losses;
  • 評估標準metrics:對于任何分類問題,都希望將其設(shè)置為metrics = ['accuracy']。他可以使現(xiàn)有的字符串標識符,也可以是自定義的評估標準函數(shù)。
# 分類問題
model.compile(
    optimizer='rmsprop',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)
# 二分類問題
model.compile(
    optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy']
)
# 均方誤差回歸問題
model.compile(
    optimizer='rmsprop',
    loss='mse'
)
# 自定義評估標準函數(shù)
import keras.backend as K
def mean_pred(y_true, y_pred):
    return K.mean(y_pred)
model.compile(
    optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy', mean_pred]
)

模型訓練

在輸入數(shù)據(jù)和標簽的Numpy矩陣上進行訓練。為了訓練這一個模型,通常會使用 fit 函數(shù),見文檔

# 對于具有2個類的單輸入模型(二進制分類)
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
             loss='binary_crossentropy',
             metrics=['accuracy'])
# 生成虛擬數(shù)據(jù)
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))
# 訓練模型,以32個樣本為一個batch進行迭代
model.fit(data, labels, epochs=10, batch_size=32)
Epoch 1/10
1000/1000 [==============================] - 0s 105us/step - loss: 0.7028 - accuracy: 0.4980
Epoch 2/10
1000/1000 [==============================] - 0s 32us/step - loss: 0.6932 - accuracy: 0.5380
Epoch 3/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6862 - accuracy: 0.5510
Epoch 4/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6842 - accuracy: 0.5580
Epoch 5/10
1000/1000 [==============================] - 0s 31us/step - loss: 0.6834 - accuracy: 0.5570
Epoch 6/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6799 - accuracy: 0.5720
Epoch 7/10
1000/1000 [==============================] - 0s 34us/step - loss: 0.6760 - accuracy: 0.5860
Epoch 8/10
1000/1000 [==============================] - 0s 37us/step - loss: 0.6742 - accuracy: 0.5920
Epoch 9/10
1000/1000 [==============================] - 0s 35us/step - loss: 0.6702 - accuracy: 0.5810
Epoch 10/10
1000/1000 [==============================] - 0s 36us/step - loss: 0.6686 - accuracy: 0.6050
<keras.callbacks.callbacks.History at 0x1e1c574b888>

Model通用模型

通用模型可以設(shè)計非常復雜、任意拓撲結(jié)構(gòu)的神經(jīng)網(wǎng)絡,例如有向無環(huán)網(wǎng)絡、共享層網(wǎng)絡等。

相比于序列模型只能依次線性逐層添加,通用模型能夠比較靈活地構(gòu)造網(wǎng)絡結(jié)構(gòu),設(shè)定各層級的關(guān)系。

from keras.layers import Input, Dense
from keras.models import Model
# 定義輸入層,確定輸入維度
input = input(shape = (784, ))
# 2個隱含層,每個都有64個神經(jīng)元,使用relu激活函數(shù),且由上一層作為參數(shù)
x = Dense(64, activation='relu')(input)
x = Dense(64, activation='relu')(x)
# 輸出層
y = Dense(10, activation='softmax')(x)
# 定義模型,指定輸入輸出
model = Model(input=input, output=y)
# 編譯模型,指定優(yōu)化器,損失函數(shù),度量
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
# 模型擬合,即訓練
model.fit(data, labels)

到此這篇關(guān)于Keras深度學習模型Sequential和Model詳解的文章就介紹到這了,更多相關(guān)Keras深度學習模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 輸出時去掉列表元組外面的方括號與圓括號的方法

    Python 輸出時去掉列表元組外面的方括號與圓括號的方法

    今天小編就為大家分享一篇Python 輸出時去掉列表元組外面的方括號與圓括號的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python使用fileinput模塊實現(xiàn)逐行讀取文件的方法

    python使用fileinput模塊實現(xiàn)逐行讀取文件的方法

    這篇文章主要介紹了python使用fileinput模塊實現(xiàn)逐行讀取文件的方法,涉及Python中fileinput模塊操作文件的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 使用Python實現(xiàn)PDF頁面設(shè)置操作

    使用Python實現(xiàn)PDF頁面設(shè)置操作

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)PDF頁面設(shè)置操作,例如旋轉(zhuǎn)頁面和調(diào)整頁面順序,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • Python入門教程(十二)Python列表

    Python入門教程(十二)Python列表

    這篇文章主要介紹了Python入門教程(十二)Python列表,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • 淺談Python淺拷貝、深拷貝及引用機制

    淺談Python淺拷貝、深拷貝及引用機制

    本篇文章主要介紹了Python淺拷貝、深拷貝及引用機制,詳細的介紹了淺拷貝、深拷貝的介紹和區(qū)別,有興趣的可以了解一下。
    2016-12-12
  • 關(guān)于python變量的引用以及在底層存儲原理

    關(guān)于python變量的引用以及在底層存儲原理

    Python的變量,簡單來說有數(shù)值型,布爾型,字符串類型,列表,元組,字典等6大類。那么不同變量類型在底層是如何存儲的,關(guān)系到變量的引用,能否正確的掌握變量的相關(guān)操作?接下來小編就來為大家講解python變量的引用以及在底層存儲原理,需要的朋友可以參考一下
    2021-09-09
  • Python操作MySQL模擬銀行轉(zhuǎn)賬

    Python操作MySQL模擬銀行轉(zhuǎn)賬

    這篇文章主要為大家詳細介紹了Python操作MySQL模擬銀行轉(zhuǎn)賬,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 分享一個pycharm專業(yè)版安裝的永久使用方法

    分享一個pycharm專業(yè)版安裝的永久使用方法

    這篇文章主要介紹了分享一個pycharm專業(yè)版安裝的永久使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Python matplotlib修改默認字體的操作

    Python matplotlib修改默認字體的操作

    這篇文章主要介紹了Python matplotlib修改默認字體的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 一文教會你使用Python批量縮放圖片

    一文教會你使用Python批量縮放圖片

    最近處理一些規(guī)格不一的照片,需要修改成指定尺寸便于打印,下面這篇文章主要給大家介紹了關(guān)于使用Python批量縮放圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02

最新評論