归一化输入时需要按照特征值分别计算(附归一化代码)

该博客讨论了在深度学习中对输入数据进行零均值和归一化处理的重要性。作者指出,应当按特征值分别计算均值和方差,以避免小值被近似为0,确保数据的有效归一化。提供的代码示例展示了如何使用numpy实现这一过程,对输入数据进行归一化处理。
摘要由CSDN通过智能技术生成

结论

        需要按照特征值x_{1},x_{2},...,x_{n}分别求取均值和方差,然后再做零均值和归一化方差处理。

原因

        在学习《吴恩达·深度学习》第二门课 1.9 归一化输入时,遇到一个问题。视频里说均值\mu\sigma ^{2}都是一个向量。但我不是很理解到底是不是按照特征值分别求取,再分别放缩。

        群里老兄点拨,假设对整个矩阵求均值和方差,再减去和除以,可能会导致原来比较小的值近似为0。不符合归一化输入处理的目的。因此需要按特征值分别求取。

视频笔记:

1.9 归一化输入(Normalizing inputs)http://www.ai-start.com/dl2017/html/lesson2-week1.html#header-n227http://www.ai-start.com/dl2017/html/lesson2-week1.html#header-n227

编码

import numpy as np

# 对传入数据进行归一化处理
# data的shape应该是(x,m),其中x是特征值的个数,m是样本数量
def normalizing(data: np.ndarray):
    # m = 样本数量
    m = data.shape[1]
    # 1.零均值:对每一个特征值分别求均值
    u = (1 / m) * data.sum(axis=1, keepdims=True)
    cache = data - u

    # 2.归一化方差:注意,是先平方再求和,这是为了避免如[-1,0,1]数据造成求和为0,之后产生除以0
    delta_double = (1 / m) * (cache ** 2).sum(axis=1, keepdims=True)
    cache = cache / delta_double
    return cache


if __name__ == '__main__':
    # 输入的数组 shape=(2,3)
    arr = np.array([[1, 2, 3], [4, 5, 6]])
    print(normalizing(data=arr))

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值