# 神经网络入门
# 层:深度学习的基础组件
层是一个数据处理模块,将输入张量转化为输出张量
层有状态,层的状态叫做权重
- 密集连接层(全连接层、密集层):处理简单的向量数据构成的2D张量
- 循环层:处理序列数据构成的3D张量
- 二维卷积层:处理图像数据等构成的4D张量
层有输入形状和输出形状,下一层的输入形状等于上一层的输出形状
形状是张量的基本属性,比如2D张量的形状为(x,y),x为0轴的元素个数,y为1轴的元素个数
# 模型:层构成的网络
模型是由层构成的拓扑结构,是一个有向无环图
常见的拓扑结构包括:双分支结构、多头结构、Inception模块
在图论 (opens new window)中,如果一个有向图 (opens new window)无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图
# 损失函数和优化器:配置学习过程的关键
- 损失函数(目标函数):损失函数的结果表示与预测值的差距,深度学习的目标是将其最小化
- 优化器:针对损失函数的结果决定如何对网络进行更新,它执行的是随机梯度下架(SGD)的某个变体
随机梯度下降:梯度是张量运算的导数,可以理解为速率,梯度有方向,当我们朝着梯度相反方向前进,计算值就会减小。随机体现在当有很多参数时,我们不是对每一个参数都进行优化,而是随机挑选一个参数进行优化。
# Keras简介
Keras是一个深度学习框架,可以方便地定义的训练几乎所有类型的深度学习模型
Keras是一个模型级的库,不处理基本的张量运算,转而使用第三方的张量计算库,这些库就是Keras的后端引擎。目前支持TenserFlow后端、Theano后端和微软认知工具包后端
定义模型有两种方法,Sequential类和函数式API,前者定义线性堆叠的网络,另一种可以组成任意的有向无环图架构