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. 千万不要相信你学得有多快
相关推荐
孟祥_成都30 分钟前
【全网最通俗!新手到AI全栈开发必读】 AI 是如何进化到大模型的
前端·人工智能·全栈
牛奶1 小时前
AI辅助开发的基础概念
前端·人工智能·ai编程
东坡肘子1 小时前
OpenClaw 不错,但我好像没有那么需要 -- 肘子的 Swift 周报 #125
人工智能·swiftui·swift
风象南8 小时前
普通人用AI加持赚到的第一个100块
人工智能·后端
牛奶9 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶9 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
罗西的思考12 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
冬奇Lab13 小时前
OpenClaw 源码精读(2):Channel & Routing——一条消息如何找到它的 Agent?
人工智能·开源·源码阅读
冬奇Lab13 小时前
一天一个开源项目(第38篇):Claude Code Telegram - 用 Telegram 远程用 Claude Code,随时随地聊项目
人工智能·开源·资讯
格砸14 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端