> //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
- 网络拓扑图像为:
#### 以上
#### 希望对大家有所帮助