前言
目前深度学习领域的主流框架
- tensorflow
- keras
- pytorch
- caffe
- theano
- paddlepaddle
keras
代码架构
keras代码风格相比于其他框架更符合人的思维。
模型
- 模型的组成分为三部分:输入层、网络层、输出层。
输入层
- 输入层的作用时规定了模型输入的shape
from keras.layers import Inputipt = Input(shape=(feature,))
注意**,shspe不包含样本数量的维度**。
参数详情
网络层
网络层的定义如:全连接层、卷积层、LSTM层,自定义网络层等。
-
from keras.layers. import Dense,Conv2D,LSTM.
一些常见的网络层主要参数如下,其他网络层参数详情可以自己去文档溜达溜达。 -
Dense(units,activation = None…)
- units: 神经元的个数。
- activation 激活函数.
-
Conv2D (filters, kernel_size, strides=(1, 1), padding=‘valid’, activation=None, …)
- filters: 整数:输出空间的维度,(即卷积中的滤波器的输出数量)
- kernel_size: 一个整数,或者两个整数表示的元组和列表,指明2D卷积窗口的高度和宽度。可以是一个整数,为所有空间维度指定相同的值。
- strides: 一个整数,或者 2 个整数表示的元组或列表, 指明卷积沿宽度和高度方向的步长。 可以是一个整数,为所有空间维度指定相同的值。 指定任何 stride 值 != 1 与指定dilation_rate 值! = 1两者不兼容。
- padding: “valid” 或 “same” (大小写敏感)。
- activation 激活函数》
LSTM
( units, activation=‘tanh’,return_sequences=False,…)
- units: 输出向量的维度,
- activation:激活函数
- return_sequences: 布尔值,是返回输出序列中的最后一个输出,还是全部序列,(即每一个时间步对应一个输出)
关于网络层一些常见的激活函数
- relu、tanh、sigmoid
输出层
在keraskeraskeras中没有项输出层一样专门的层定义,而是在模型的最后一个接入一个全连接层(Desnse),作为输出层。
此处中最后一层即为输出层,该模型只有一个输出。
搭建
上一步,主要定义一些层的基本信息:如输入/输出,网络层(神经元数量、激活函数等等)。现在需要把这些层组建起来:
定义
编译
编译:指明模型训练时候用的优化器,损失函数、评价标准等等。
常见的优化器有: rmsprop、sgd
需要设置的优化器参数
常见的损失函数有:
常见的评价标准
训练
分批训练
迭代训练
迭代训练相比较前两种较为复杂的,首先定义一个迭代器(即函数)
- 有关yield关键字可自形百度了解。
评估
对测试集进行评估,如果在模型编译的时候没有指明metricsmetricsmetrics,
则返回Loss对应指标,否则返回metrics对应指标。
同样fitfitfit也分批迭代评估。
预测
保存
加载第一种保存的模型》
加载第二种只保存权重的模型,相比较第一种优点复杂,首先要定义好相应的模型后再加载。
总结
明天将项目给其搞完整,会自己将各种项目都给其搞定。keras库会根据项目将其详细学习,学会模型搭建以及模型的构造都行啦的样子与打算。