人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
tensorflow 2.0 画出model网络模型的拓扑图
tensorflow 2.0 的回调函数callbacks(TensorBoard、ModelCheckpoint)
TensorBoard视觉化网络每层权重分布、视觉化网络层结构
MSE(均方误差)、MAE(平均绝对误差)
from_logits
CE(Cross-Entropy)、BCE(Binary Cross-Entropy 即Sigmoid+CE)、CCE(Categorical Cross-Entropy 即Softmax+CE)
对连续值/离散值进行预处理的两种方式(标准化/one-hot化)、反标准化/逆标准化、字符串预处理
损失函数loss、指标函数metrics
激活函数 Sigmoid、Tanh、ReLU、Softmax
Batch Normalization
反向传播、梯度下降、学习率、优化器optimizers(GD、SGD、Momentum、AdaGrad、Adam)
权重初始化对于激活函数的选择:随机常态分布/随机正态分布初始化(标准差为0.01或1)、Xavier(Glorot)初始化、He初始化
图像增强(IA)、数据预处理
混淆矩阵tf.math.confusion_matrix
使用预训练网络训练的两种方式:Keras Applications、TensorFlow Hub
二维矩阵每一列预测标签中的数字代表该类别预测值,每一行真实标签中的数字的总和代表的是该类别的真实总数量。
假设有一个用来对猫cat、狗dog、兔子rabbit进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。
假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如上图,在这个混淆矩阵中:
第一行猫类别实际真实有8只,但是分类系统将其中3只预测成了狗;
第二行狗类别实际真实有6只,但是分类系统将其中1只预测成了兔子,2只预测成了猫;
第三行兔子类别实际真实有13只,但是分类系统将其中2只预测成了狗;
从混淆矩阵中我们可以看出分类系统对于区分猫、狗存在一些问题,但是区分兔子的效果还算可以的。
分类系统所有正确的预测结果都在从左上角到右下角的斜对角线上,所以从混淆矩阵中可以很方便直观的看出预测哪里有错误。
监督学习:混淆矩阵
confusion_matrix(labels, predictions, num_classes=None, weights=None, dtype=tf.int32, name=None)
根据真实标签labels和预测标签predictions计算混淆矩阵。
矩阵的列表示预测标签predictions,矩阵的行表示真实标签labels。
混淆矩阵总是一个二维的形状数组[n,n],其中n是给定分类任务的有效标签数。
预测标签predictions和真实标签labels必须是相同形状的一维数组,才能使此函数工作。
如果num_classes是None,那么num_classes将被设置为一个加上预测标签predictions或真实标签labels中的最大值。
类别标签应该从0开始。例如,如果num_classes是3,那么可能的标签是[0,1,2]。
如果weights不是None,则每个预测将其相应的权重贡献给混淆矩阵单元的总值。
例子:
tf.math.confusion_matrix([1, 2, 4], [2, 2, 4])
[[0 0 0 0 0]
[0 0 1 0 0]
[0 0 1 0 0]
[0 0 0 0 0]
[0 0 0 0 1]]
注意,可能的标签假定为[0,1,2,3,4],产生5x5混淆矩阵。
Args:
labels: 用于分类任务的真实标签的一维张量。
predictions: 给定分类的一维预测张量。
num_classes: 分类任务可能具有的标签数。如果未提供此值,则将使用预测和标签数组计算该值。
weights: 形状与预测相符的可选张量
dtype: 混淆矩阵的数据类型
name: 作用域名称
Returns:
dtype类型的张量,其形状为[n,n]表示混淆矩阵,其中n是分类任务中可能的标签数目。
Raises:
ValueError:如果预测和标签都不是一维向量且形状不匹配,或者如果权重不是None且其形状与预测不匹配。
>>> import tensorflow as tf
>>> tf.math.confusion_matrix([1, 2, 4], [2, 2, 4]) #假设可能的标签是[0, 1, 2, 3, 4],导致5x5混淆矩阵。
>>> tf.math.confusion_matrix([1, 2, 4], [2, 2, 4], num_classes=5)