目录
一、Keras的模型
keras是基于tensorflow的高级神经网络库,其中的神经网络模型通过层的图(graph of layers)来定义,分为序列化模型和功能化模型两种。
1.序列化API
Model=Sequential()创建空模型,可通过model.add()或sequential([层列表])将层添加到模型中。
如:
Model=Sequential()
Model.add(Dense(10,input_shape=(256,))
2.功能化API
通过输入和输出定义模型,可构建分支,多个输入层、输出层和共享层,Model=Model(inputs=[张量列表],outputs=[~])。例:
1. 创建输入层
input=Input(shape=(64,))
2. 创建密集层
hidden=Dense(10)(inputs)
3. 创建隐含层
hidden=Activation('tanh')(hidden)
hidden=Dense(10)(hidden)
output=Activation('tanh')(hidden)
4. 用输入层和输出层实例化模型对象
model=Model(inputs=input,outputs=output)
二、训练步骤
keras的训练步骤为:创建模型--添加层--编译模型--训练模型--评估预测。
1.模型编译
model.compile(self,optimizer,loss,metrics=None,sample_weight_mode=None)
- 优化器:SGD、RMSprop、Adagrad、Adam、Adamax;
- 损失函数:mean_squared_error,mean_absolute_error,squared_hinge,hinge,sparse_categorical_crossentropy,binary_crossentropy,binary_accuracy
- Metrics:度量标准列表,同loss
2.模型训练
model.fit(x,y)
fit函数定义:fit(self,x,y,batch_size=32,epochs=10,verbose=1,)
三、keras中的层
1.keras内核层
- Dense:全连接,输出为activation((inputs * weights)+bias),激活默认为None;
keras.layers.Dense(units, activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None)
- Activation:激活函数可用softmax、ele、selu、softplus、relu、tanh、sigmoid;
- Dropout:
- Flatten
- Reshape
- Permute:按指定模式对输入大小重新排列
- RepeatVector:按给定次数重复输入,(s,t)形状张量重复n此形状为(s,n,t);
- Lambda自定义函数包装图层。
- ActivityRegularization:L1或L2正则化。
2.keras中的卷积层
- Conv1/2/3D:
- Cropping1/2/3D:
- SeparableConv2D:在每个输入通道上应用深度方向的空间卷积,然后逐点卷积并将输出通道合并
- Conv2DTranspose:将卷积的形状恢复为输入形状
- UpSampling1/2/3D:重复输入数据
- ZeroPadding1/2/3D
3.池化层
(Global)Max/AveragePooling1/2/3D
4.循环层
- SimpleRNN:全连接RNN
- GRU:门控循环单元网络
- LSTM
5.嵌入层
Embedding:产生由密集向量组成的张量
6.合并层
Add、Multiply、Average、Maximum、Concatenate、Dot
7.高级激活层
- LeakyReLU
- PReLU
- ELU
- ThresholdedReLU
8.噪声层
- GaussianNoise:将可加的0中心高斯噪声应用于输入
- GaussianDropout:将可乘的1中心~
- AlphaDropout:删除一定比例的输入,使得输出的均值、方差与输入相近