TensorFlow 笔记

------------------------------- 1. 创建模型阶段 -------------------------------

1. Activation 激活函数,

属于模型的一个层,可以用于中间层,输出层。

  1. ReLU (Rectified Linear Unit), 修正线性单元,即 max(0, x), 速度快, 多用于中间层。
  2. sigmoid, 输出 0-1 之间的数,适合二分类。多用于最后输出层。
  3. tanh, 很优秀!
  4. softmax 返回的是一个由多个概率值(和为1)组成的数组,适合多分类,最后输出层。

------------------------------- 2. 训练模型阶段 -------------------------------

2. loss 损失函数

也称为 目标函数, Loss function:𝐿(𝑦^ , 𝑦).
  1. cost = 对𝑚个样本的损失函数求和,然后除以 m
  2. categorical_crossentropy 适合多分类问题
  3. binary_crossentropy 适合二分类问题
  4. mean-squared error, 适合回归问题
  5. CTC,connectionist temporal classification 适合时序分类
  6. 交叉熵(crossentropy),适用于,输出概率值的模型
    交叉熵,属于信息论领域的概念,用于衡量概率分布之间的距离,比如真实分布与预测值之间的距离。
  7. mse, 均方误差(MSE,mean squared error),回归问题常用的损失函数。

3. 优化器, 目的是进行【快速的梯度下降】

  1. Adam (Adaptive Moment Estimation)优化算法
    基本上就是将 Momentum 和 RMSprop 结合在一起
  2. RMSprop, root mean square prop
  3. 动量梯度下降法(Gradient descent with Momentum)
  4. mini-batch
  5. rmsprop 无论你的问题是什么,通常都是很好的优化器。

梯度下降,其实就是更新公式的参数,更新 W 和 b 的值

总共大概有6种
  1. SGD, 小批量随机梯度下降

数据正则化 Regularization 正则化的目的,是为了防止过度拟合。

𝐿2正则化: 很常用,可以防止过度拟合。

dropout 随机失活:

early stopping: 提早停止训练

  1. L1 正则化: 添加的成本与权重系数的绝对值成正比

  2. L2 正则化: 添加的成本与权重系数的平方成正比

    from keras import regularizers

    regularizers.l1_l2(l1=0.001, l2=0.001) # 或

    layers.Dense(16, kernel_regularizer=regularizers.l2(0.001),...

  3. dropout 正则化,对一些输出特征随机舍弃(设置为0).

    model.add(layers.Dropout(0.5)) # 通常在 0.2 -- 0.5

模型评估

  1. 查准率(precision),在你的分类器标记为猫的例子中,有多少真的是猫。
  2. 查全率(recall),对于所有真猫的图片,你的分类器正确识别出了多少百分比
  3. F1 大约是 recall 和 precision 的均值。实际是 调和平均数
  4. 实际使用中,还要考虑到时间消耗。 即模型做出判断的时间长短。

网络层, 网络架构

  1. Dense() 是密集连接, 全连接层. 输入一个二维张量,返回一个二维张量。
    Dense(16, activation='relu') 这个16,表示16个隐藏单元
    隐藏单元越多,网络越复杂,计算代价越大。会提高训练集的性能,不会提高测试集的性能。
  2. Conv2D, 卷积层,学习的是局部模式,而 Dense 学到的是全局模式,
    模式的平移不变性,模式的空间层次结构。
  3. MaxPooling2D 把上一层输出的图像尺寸减半,26 x 26 --> 13 x 13
    是对特征图进行采样,有助于学习特征的空间层级结构。

编译网络阶段

  1. loss function 损失函数: 网络如何衡量在训练数据上的性能,如何朝着正确的方向前进
  2. optimizer 基于训练数据和损失函数,来更新网络的机制
  3. metric 指标, 训练和测试过程中需要监控的指标

网络评价

  1. 训练精度和测试精度之间的这种差距, 是过拟合(overfit)造成的

其他:

  1. Numpy(以及大多数其他库)中不存在字符串张量,因为张量存
    储在预先分配的连续内存段中,而字符串的长度是可变的,无法用这种方式存储
  2. 神经网络的引擎: 基于梯度的优化。
  3. 梯度 gradient, 是张量运算的导数。
  4. 神经网络常用的场景,二分类问题、多分类问题和标量回归问题。
  5. Sequential() 是基于层的线性堆叠。

过度拟合

  1. 降低训练的轮数,可以有效降低过度集合
  2. 判断过度拟合一个依据是,验证集的准确度从什么时候开始停止增长
  3. 训练集越小,越容易出现过度拟合,可以减少网络的大小

metric

  1. mae, 平均绝对误差(MAE,mean absolute error),预测值与目标值之差的绝对值。 这个值越小越好。 这个事情, 我曾经闹出笑话!

使用预训练模型

  1. 特征提取

  2. 微调模型

  3. 激活函数

    sigmoid 生成 (0, 1) 之间的数

    ReLU 生成 max(0, x) 之间的数

    SGD 随机梯度下降 适合大量数据

    L2正则化 目的是为了防止过度拟合,增加训练集也可以防止过度拟合

GAN 生成对抗网络,属于是无监督学习。想象一个例子,制作假币。

生成器 输入随机噪点作为样本

判别器 以真实数据作为输入

要点:

  1. 当训练过程变得困难时,别说话,降低学习速率.
  2. 千万不要相信你学得有多快
相关推荐
SpikeKing1 分钟前
LLM - 理解 多模态大语言模型(MLLM) 的 对齐微调(Alignment) 与相关技术 (五)
人工智能·深度学习·语言模型·rlhf·alignment·dpo·instructgpt
魔力之心1 分钟前
人工智能与机器学习原理精解【21】
人工智能·机器学习·支持向量机
zhangbin_2374 分钟前
【Python机器学习】NLP信息提取——正则模式
开发语言·人工智能·python·深度学习·机器学习·自然语言处理
完球了6 分钟前
【Day03-MySQL单表】
数据库·笔记·学习·mysql·sql8.0
kolaseen39 分钟前
pytorch的动态计算图机制
人工智能·pytorch·python·深度学习·机器学习
CareyWYR43 分钟前
每周AI论文速递(240916-240920)
人工智能
酒饮微醉-1 小时前
论文阅读--Planning-oriented Autonomous Driving(二)
论文阅读·笔记·学习·自动驾驶
sp_fyf_20241 小时前
当大语言模型应用到教育领域时会有什么火花出现?
人工智能·语言模型·自然语言处理
QXH2000001 小时前
数据预处理方法—数据标准化和数据归一化
人工智能·python·深度学习·机器学习
你可以叫我仔哥呀1 小时前
学习笔记JVM篇(五)
jvm·笔记·学习