首页 > 编程语言 >使用python基本库代码实现神经网络常见层

使用python基本库代码实现神经网络常见层

时间:2024-07-04 17:32:04浏览次数:17  
标签:批量 python 代码 beta 神经网络 normalized 归一化 np gamma

一:批量归一化(Batch Normalization)

代码解释:

  1. 函数定义

    • batch_norm 函数接受输入数据 X、缩放参数 gamma、平移参数 beta 和一个小常数 epsilon,用于防止除零错误。
    • X 的形状为 (N, D),其中 N 是批量大小,D 是特征维度。
    • gammabeta 的形状为 (1, D)
  2. 计算批量均值和方差

    • mean = np.mean(X, axis=0) 计算每个特征的均值。
    • variance = np.var(X, axis=0) 计算每个特征的方差。
  3. 归一化处理

    • X_normalized = (X - mean) / np.sqrt(variance + epsilon) 对每个特征进行归一化处理,使其均值为0,方差为1。
  4. 缩放和平移

    • normalized_X = gamma * X_normalized + beta 进行缩放和平移变换。
  5. 示例数据

    • 使用一个示例数据 X 进行测试,打印归一化后的数据。

通过这些步骤,可以实现批量归一化。该实现方式只使用了NumPy库,可以方便地理解和应用于各种机器学习和深度学习项目中。

import numpy as np

# 批量归一化函数
def batch_norm(X, gamma, beta, epsilon=1e-5):
    """
    实现批量归一化

    参数:
    X : 输入数据,形状为(N, D),其中N是批量大小,D是特征维度
    gamma : 缩放参数,形状为(1, D)
    beta : 平移参数,形状为(1, D)
    epsilon : 一个小常数,防止除零错误

    返回:
    normalized_X : 归一化后的数据,形状与X相同
    """

    # 计算批量均值
    mean = np.mean(X, axis=0)
    # 计算批量方差
    variance = np.var(X, axis=0)
    # 对输入数据进行归一化处理
    X_normalized = (X - mean) / np.sqrt(variance + epsilon)
    # 进行缩放和平移变换
    normalized_X = gamma * X_normalized + beta
    
    return normalized_X

# 示例数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 缩放参数(通常初始化为1)
gamma = np.ones((1, X.shape[1]))
# 平移参数(通常初始化为0)
beta = np.zeros((1, X.shape[1]))

# 调用批量归一化函数
normalized_X = batch_norm(X, gamma, beta)
print("归一化后的数据:\n", normalized_X)
View Code

 

标签:批量,python,代码,beta,神经网络,normalized,归一化,np,gamma
From: https://www.cnblogs.com/lizhiqiang0204/p/18284281

相关文章

  • 基于Java+Vue的采购管理系统:采购过程合规高效(整套代码)
         前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确......
  • 如何在SpringBoot项目中使用Activiti工作流(整套代码)
      前言activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,一套完整并且实际运用在多套项目中的案例,满足日常业务流程审批需求。一、项目形式springboot+vue+activiti集成了activiti在线编辑器,流行的前后端分离部署开发模式,快速开发平台,可插拔工作流服务......
  • Jspxcms v9.0.0代码审计
    复现了jspxcmsv9.0.0的文件上传、SSRF、Shiro反序列化漏洞,记录了其中发生的问题及解决方法环境搭建这部分就不讲了,主要在tomcat上部署会遇到一些问题,文中也会给出解决方法任意文件上传登录后台(账号admin密码空)在文件上传处,可以上传zip压缩包,且上传的压缩包会自动解压抓包查......
  • 【python学习笔记】Python装饰器
    装饰器参考:搞懂Python装饰器Python@wraps修饰器装饰器是什么有兴趣的可以参考PEP318的原文DecoratorsforFunctionsandMethods解释了语法用途以及设计出来装饰器的动机Thecurrentmethodfortransformingfunctionsandmethods(forinstance,declaringthem......
  • 代码随想录算法训练营第2天 | 数组滑动窗口、螺旋打印
    有序数组的平方。常规方法复习冒泡排序,也可以使用双指针。因为有序数组的平方,最大值一定在两侧,最小值在中间。可以两侧往中间收拢。2024年7月4日笔记:双指针法,两侧往中间逼近一定是从大到小,然后给res数组倒着填即可实现从小到大。题977.有序数组的平方classSolution{pub......
  • python教程:自定义函数
    1.多态我们可以看到,Python不用考虑输入的数据类型,而是将其交给具体的代码去判断执行,同样的一个函数(比如这边的相加函数my_sum()),可以同时应用在整型、列表、字符串等等的操作中。在编程语言中,我们把这种行为称为多态。这也是Python和其他语言,比如Java、C等很大的一个不同点......
  • Python教程:空值、无穷值判断之isna、isnull、isfinite
    一、空值isnaPands中NaN(Not-A-Number)视为空值,利用函数isna和notna进行判断。注意:不要利用是否等于None判断是否为空!importpandasaspdpd.NA==None#Falsepd.isna(pd.NA)#Truepd.isna(None)#Truepd.notna(pd.NA)#Falsepd.notna(None)#False二、......
  • Python教程:os.popen(cmd).read()查看后台进程并杀进程
    一、os.popen()方法1.使用语法os.popen()方法用于从一个命令打开一个管道。os.popen(cmd).read()获取执行后结果。os.popen(command[,mode[,bufsize]])#使用的命令#模式权限:默认'r'或者'w'#文件需要的缓冲大小0无缓冲1行缓冲其他数值以字节为单位负值使用系统......
  • Python多维列表(元组)合并成一维形式
    一.需求原格式:input=[[1,2,3],[4,5,6],[7,8,9]]目标格式:[1,2,3,4,5,6,7,8,9]二.方法1.sum函数合并input=[[1,2,3],[4,5,6],[7,8,9]]output=sum(input,[])print(output)#结果:[1,2,3,4,5,6,7,8,9]这个看上去很简洁,不过有类似字符串累加的性能陷阱。......
  • Python Linux源码安装
    保留服务器原Python安装版本,安装指定需求版本Python1.查看当前系统版本[root@iZbp1ac4pv22mg092qi2zfZ~]#cat/etc/system-releaseCentOSLinuxrelease7.9.2009(Core)2.查看已安装Python路径及版本[root@iZbp1ac4pv22mg092qi2zfZ~]#whichpython/usr/bin/python[ro......