keras sequential建立網路模型和functional api建立網路模型的區別
阿新 • • 發佈:2020-11-01
> //20201101
> 寫在前面:最近在過tensorflow和keras的基礎,今天學到了keras兩種建立網路模型的區別,在此記錄一下
### 1.sequential序列建立網路模型
- 使用sequential建立網路模型,只能順序建立,也就是說,網路是線性傳播的,不能有共享輸入或者共享輸出
- 使用sequential建立網路模型有兩種方法
- 使用add()方法將所需的網路層一層一層累加進去
- 直接在sequential方法中傳入列表格式資料(其中包含所需要建立網路的架構)
#### 原始碼例項如下
- 第一種方法
from keras.models importSequential 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
- 網路拓撲影象為:
#### 以上
#### 希望對大家有所幫助