实例分析:
#导入必要库
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.ERROR) #只记录错误日志
import numpy as np #导入数学计算库
#创建样本
celsius_q = np.array([-40,-10,0,8,15,22,38],dtype=float) #定义输入
fahrenheit_a = np.array([-40,-10,0,8,15,22,38],dtype=float)#定义输出
#输入可以定义为feature特征值输出为label标签,所有的数据为example样例
#build layer创建层级
tf.keras.layers.Dense(units=1,input_shape=[1]) #指定内部变量个数units以及数据维度shape
#装载层级进入model
model = tf.keras.Sequential(10) #定义层级数量为10
####同样可以将以上合并定义如下:
#
model = tf.keras.Sequential([
tf.keras.layers.Dense(****)##Dense密度,层级的密度,可以理解为神经网络的复杂程度
])
#
#model的编译
model.compile(loss="mean_squard_error",optimizer=tf.keras.optimizers.Adam(0.1)) #编译的时候指定损失函数和优化器。0.1指定了学习速率。
#model训练(学习的过程)
history = model.fit(celsius_q,fahrenheit_a,epochs=500,verbose=False)#epochs周期设置为500,一个训练集训练500次7个一共训练7*500=3500次
import matplotlib.pyplot as plt #导入绘图工具,通过图表查看训练过程
plt.xlable("Epoch Number")
plt.ylable("Loss Magnitude")
plt.plot(history.history["loss"])
#model使用,预测新值
model.predict([100.0]) ##预测过程
小结:
- 特征:模型的输入
- 样本:用于训练流程的输入/输出对
- 标签:模型的输出
- 层级:神经网络中相互连接的节点集合。
- 模型:神经网络的表示法
- 密集全连接层 (FC):一个层级中的每个节点都与上个层级中的每个节点相连。
- 权重和偏差:模型的内部变量
- 损失:期望输出和真实输出之间的差值
- MSE:均方误差,一种损失函数,它会将一小部分很大的差值视作比大量很小的差值更糟糕。
- 梯度下降法:每次小幅调整内部变量,从而逐渐降低损失函数的算法。
- 优化器:梯度下降法的一种具体实现方法。(有很多算法。在这门课程中,我们将仅使用“Adam”优化器,它是 ADAptive with Momentum 的简称,并且被视为最佳优化器。)
- 学习速率:梯度下降过程中的损失改进“步长”。
- 批次:在训练神经网络的过程中使用的一组样本。
- 周期:完全经过整个训练数据集一轮
- 前向传播:根据输入计算输出值
- 反向传播:根据优化器算法计算内部变量的调整幅度,从输出层级开始,并往回计算每个层级,直到抵达输入层。
以上实例为一个明显的回归问题regression,机器学习另外的一种问题就是分类问题classfication问题
- 扁平化:将二维图像转换为一维向量的过程
- ReLU:一种激活函数,使模型能够解决非线性问题
- Softmax:一种函数,能够为每个潜在输出类别生成概率
- 分类:一种机器学习模型,用于区分两个或多个输出类别
- CNN:卷积神经网络。即至少有一个卷积层的网络。典型的 CNN 还包括其他类型的层级,例如池化层和密集层。
- 卷积:向图像应用核(滤波器)的过程
- 核/滤波器:小于输入的矩阵,用于将输入变成多个小区域
- 填充:在输入图像周围添加像素,像素值通常为 0
- 池化:通过下采样降低图像大小的过程。池化层有多种类型。例如,平均池化通过求平均值将多个值变成一个值。但是最大池化是最常见的池化类型。
- 最大池化:一种池化过程,通过获取多个值中的最大值,将多个值变成一个值。
- 步长:在图像上滑动核(滤波器)的间隔像素数量。
- 下采样:降低图像大小的操作
过度拟合(overfitting)
通过损失函数在训练集以及验证集在周期的表现差越来越大可以推测。
导致过度拟合的一种原因是训练集当中数据的不单纯导致(杂项过多,没有灵活区分,和切割丢弃)
避免过度拟合的两种方式是:图像增强和丢弃。
图像增强:将图片进行旋转缩放等动作
丢弃:通过训练过程强制关闭某些神经元,从而增强其他神经元的权重。
防止过拟合的其他技巧
在这节课,我们学习了防止过拟合的三种不同技巧:
- 早停法:对于此方法,我们会在训练过程中跟踪验证集的损失,并根据该损失判断何时停止训练,使模型很准确,但是不会过拟合。
- 图像增强:通过向训练集中的现有图像应用随机图像转换,人为地增加训练集中的图像数量。
- 丢弃:在训练过程中,从神经网络中随机选择固定数量的神经元并关闭这些神经元。
但是,这些并非防止过拟合的唯一技巧。请点击以下链接,深入了解这些技巧和其他技巧:
Memorizing is not learning! — 6 tricks to prevent overfitting in machine learning
迁移学习