Sequential模型

Keras的核心数据结构是model,一种组织网络层的方式,最简单的数据模型是Sequential模型,它是由多个网络层线性堆叠的栈,对于更复杂的结构,你应该使用Keras函数式,它允许构建任意的神经网络图。

sequential模型具体步骤如下所示:

from keras.models importSequential

model = Sequential()

可以简单地使用 .add() 来堆叠模型:

from keras.layers import Dense

model.add(Dense(units= 64, activation= 'relu', input_dim= 100))

model.add(Dense(units= 10, activation= 'softmax'))

也可以是一个完整的形式:

from keras.models import Sequential  
from keras.layers import Dense, Activation  
model = Sequential([  
Dense(32, input_dim=784),  
Activation('relu'),  
Dense(10),  
Activation('softmax'),])
指定输入数据的 shape

模型需要知道输入数据的shape,因此, Sequential 的第一层需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的 shape ,因此不需要为每个层都指定这个参数。有几种方法来为第一层指定输入数据的 shape:

1 传递一个input_shape的关键字参数给第一层, input_shape是一个tuple类型的数据,其中也可以填入None,则表示此位置可能是任何正整数。数据的batch大小不应包含在其中。
2 传递一个 batch_input_shape 的关键字参数给第一层,该参数包含数据的batch大小。该参数在指定固定大小 batch 时比较有用,例如在 stateful RNNs 中。事实上, Keras 在内部会通过添加一个 None 将 input_shape 转化为 batch_input_shape。

3 有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape。一些3D的时域层支持通过参数input_dim和input_dim input_length来指定输入shape。


下面的三个指定输入数据 shape 的方法是严格等价的:

[html]  view plain  copy
  1. model = Sequential()  
  2. model.add(Dense(32, <span style="background-color:rgb(255,153,255);">input_shape</span>=(784,)))  
  3.   
  4. model = Sequential()  
  5. model.add(Dense(32, <span style="background-color:rgb(255,153,255);">batch_input_shape</span>=(None, 784)))  
  6. # note that batch dimension is "None" here,  
  7. # so the model will be able to process batches of any size.</pre>  
  8.   
  9.  model = Sequential()  
  10. model.add(Dense(32,<span style="background-color:rgb(255,153,255);"> input_dim</span>=784))  

下面三种方法也是严格等价的:

[html]  view plain  copy
  1.   
[html]  view plain  copy
  1. model = Sequential()  
  2. model.add(LSTM(32, <span style="background-color:rgb(255,153,255);"><span style="color:#330033;">input_shape=(10, 64)</span></span>))  
  3.   
  4.  model = Sequential()  
  5. model.add(LSTM(32, <span style="background-color:rgb(255,153,255);">batch_input_shape=</span>(None, 10, 64)))  
  6.   
  7.  model = Sequential()  
  8. model.add(LSTM(32,<span style="background-color:rgb(255,153,255);"> input_length=10input_dim=64))</span>  
 
 

猜你喜欢

转载自blog.csdn.net/qq_36621927/article/details/79725151