1. 程式人生 > 實用技巧 >keras sequential建立網路模型和functional api建立網路模型的區別

keras sequential建立網路模型和functional api建立網路模型的區別

> //20201101

> 寫在前面:最近在過tensorflow和keras的基礎,今天學到了keras兩種建立網路模型的區別,在此記錄一下

### 1.sequential序列建立網路模型

- 使用sequential建立網路模型,只能順序建立,也就是說,網路是線性傳播的,不能有共享輸入或者共享輸出

- 使用sequential建立網路模型有兩種方法

  - 使用add()方法將所需的網路層一層一層累加進去

  - 直接在sequential方法中傳入列表格式資料(其中包含所需要建立網路的架構)

#### 原始碼例項如下

- 第一種方法

from keras.models import
Sequential from keras.layers import Dense # 構建模型 model = Sequential() model.add(Dense(2, input_shape=(1,))) model.add(Dense(1))

- 第二種方法

model = Sequential([
   Dense(2,input_shape = (1,))
   Dense(1)    
])

> ps:然後呼叫compile()編譯網路,呼叫fit()訓練網路

### 2.使用functional api建立網路

- functional api建立網路時允許網路中有分支路線與匯合結點(使用concatenate方法)

- 具體程式碼示例如下

mnist_input = keras.layers.Input(shape=(28*28,1),name = 'input')
    lstm1 = keras.layers.LSTM(128,name = 'lstm1')(mnist_input)

    interp21 = keras.layers.Dense(64,activation='relu',name='interp21')(lstm1)
    interp22 = keras.layers.Dense(32,activation='relu',name='interp22')(interp21)
    interp23 
= keras.layers.Dense(16,activation='relu',name='interp23')(interp22) interp11 = keras.layers.Dense(10,activation='relu',name='interp11')(lstm1) merge = keras.layers.concatenate([interp23,interp11],name='merge') output = keras.layers.Dense(10,activation='softmax',name='output')(merge) model = keras.models.Model(inputs=mnist_input,outputs=output) print(model.summary()) return model

- 網路拓撲影象為:

#### 以上

#### 希望對大家有所幫助