神经网络——主要层次:
数据输入层:Input Layer
卷积计算层:CONV Layer
ReLU激励层:ReLU Incentive Layer
池化层:Pooling Layer
全连接层:FC layer
备注:可能都有
一般的结构
卷积——激活——池化(——卷积——激活——池化)(——卷积——激活——池化)——全连接
常用的神经网络
卷积神经网络(Convolutional Neural Network) 循环神经网络(Recurrent Neural Network) 生成对抗网络(Generative Adversarial Networks) 深度强化学习(Deep Reinforcement Learning)
张量(多维数组)
创建 转换成numpy 常用函数(括加法、元素乘法和矩阵乘法) 变量
tf.keras介绍
常用方法
深度学习实现的主要流程: 1.数据获取 2.数据处理 3.模型创建与训练 4.模型测试与评估 5.模型预测
代码编写流程 1.导入tf.keras 2.数据输入 3.模型构建 4.训练与评估
- 配置训练过程:
- 模型训练
- 模型评估
- 模型预测 5.回调函数
示例:鸢尾花识别
共有 1.相关的库的导入 2.数据展示和划分 * 读取数据、展示数据 * 利用seaborn中pairplot函数探索数据特征间的关系 * 用train_test_split将数据划分为训练集和测试集
后续实现方式有两种:
3.sklearn实现
- 实例化LogisticRegressionCV分类器
- 用fit方法进行训练
- 用训练好的分类器进行预测
- 计算准确率
4.tf.keras实现 1 数据处理:标签值进行热编码 2 模型搭建:设置各个层级的神经元个数 3 模型训练和预测:
- 模型编译(设置模型的相关参数:优化器,损失函数和评价指标)
- 模型训练
- 模型评估:计算模型的损失和准确率
神经网络
人工神经网络( Artifi cial Neural Network, 简写为ANN)也简称为神经网络(NN)
神经网络中信息只向一个方向移动, 即从输入节点向前移动,通过隐藏节点,再向输出节点移动
网络中没有循环或者环。
其中的基本构件是: 输入层:即输入x的那一层 输出层:即输出y的那一层 隐藏层:输入层和输出层之间都是隐藏层
特点是: 同一层的神经元之间没有连接。 第N层的每个神经元和第N-1层的所有神经元相连,第N-1层神经元的输出就是第N层神经元的输入。 每个连接都有一个权值。
激活函数:
目的:引入非线性(线性和非线性一起会生成一个非线性的)
Sigmoid/logistics函数:数据太大或者太小时,不会呈现变化(看下图像就知道)
tanh(双曲正切曲线):比Sigmoid好的是中间点在0点
RELU:好用,酷酷用
LeakReLu
SoftMax
其他激活函数
如何选择激活函数: 优先选择RELU激活函数 如果ReLu效果不好,那么尝试其他激活,如Leaky ReLu等。 如果你使用了Relu, 需要注意一下Dead Relu问题, 避免出现大的梯度从而导致过多的神经 元死亡。 不要使用sigmoid激活函数,可以尝试使用tanh激活函数
输出层 二分类问题选择sigmoid激活函数 多分类问题选择softmax激活函数 回归问题选择identity激活函数
参数初始化
随机初始化(从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数W进行初始化) 标准初始化(权重参数初始化从区间均匀随机取值) Xavier初始化(正态化Xavier初始化、标准化Xavier初始化) 标准化的he初始化
神经网络的搭建
tf.Keras中构建模有两种方式: 1.Sequential构建(按一定的顺序对层进行堆叠,即,设置几层一层几个神经源元) 2.Model类构建(而后者可以用来构建较复杂的网络模型)
主要参数: units: 当前层中包含的神经元个数 Activation: 激活函数,relu,sigmoid等 use_bias: 是否使用偏置,默认使用偏置 Kernel_initializer: 权重的初始化方式,默认是Xavier初始化 bias_initializer: 偏置的初始化方式,默认为0
通过Sequential构建
利用function API构建
通过model的子类构建
神经网络的优缺点
1.优点
- 精度高,性能优于其他的机器学习方法,甚至在某些领域超过了人类
- 可以近似任意的非线性函数
- 随之计算机硬件的发展,近年来在学界和业界受到了热捧,有大量的框架和库可供调用
2.缺点
- 黑箱,很难解释模型是怎么工作的
- 训练时间长,需要大量的计算力
- 网络结构复杂,需要调整超参数
小数据集上表现不佳,容易发生过拟合