tf.reduce_mean 和 tf.reduce_sum, 优化目标函数时如何选择?

3.5.2 reduce_sum、reduce_mean、reduce_max、reducemin函数详解 自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1.1 reduce_sum、reduce_mean、reduce_max、reducemin函数介绍 reduce_sum函数是用来求多维tensor的元素之和的方法,reduce是降维的意思,sum是求和的意思。其定义如下: reduce_sum(input_tensor, axis=None, keepd... 阅读详情

前言

熟悉 TensorFlow 的同学都知道, TensorFlow 中有两个经常用到的函数:

  • tf.reduce_mean
  • tf.reduce_sum

那么,二者有何区别?训练时目标函数应该使用哪一个?

tf.reduce_sum

我们先看函数定义:

    tf.reduce_sum(input_tensor, axis=None, keepdims=None, name=None,
                                            reduction_indices=None, keep_dims=None)

主要是三个参数:

  • input_tensor:输入的张量数组
  • axis:求和的维度
  • keepdims:是否保持维度不变

其余reduction_indices和keep_dims是为了保持和旧版本兼容,现已废弃。
从字面上理解,这是一个降维求和函数,对于给定的输入input_tensor,对其维度axis进行降维求和(不指定则默认对整个数组求和),并且返回求和后的结果张量。直接看样例:

    >>> tensor = tf.constant(np.array([[1., 2.],[3., 4.]]))
    >>> tensor.eval()
    array([[1., 2.],
            [3., 4.]])
    >>> tf.reduce_sum(tensor).eval() # 全部求和
    10.0
    >>> tf.reduce_sum(tensor, axis=0).eval() # 按列求和
    array([4., 6.])
    >>> tf.reduce_sum(tensor, axis=1).eval() # 按行求和
    array([3., 7.])
    >>> tf.reduce_sum(tensor, axis=1, keepdims=True).eval() # 按行求和同时保持维度不变
    array([[3.],
            [7.]])

tf.reduce_mean

同样看函数定义:

tf.reduce_mean(input_tensor, axis=None, keepdims=None, name=None,                                                               reduction_indices=None, keep_dims=None)

同样主要是三个参数:

  • input_tensor:输入的张量数组
  • axis:求均值的维度
  • keepdims:是否保持维度不变

其余reduction_indices和keep_dims是为了保持和旧版本兼容,现已废弃。
类似tf.reduce_sum,只是一个是求和一个是求均值。

    >>> tensor = tf.constant(np.array([[1., 2.],[3., 4.]]))
    >>> tensor.eval()
    array([[1., 2.],
            [3., 4.]])
    >>> tf.reduce_mean(tensor).eval() # 全部求均
    2.5
    >>> tf.reduce_mean(tensor, axis=0).eval() # 按列求均
    array([2., 3.])
    >>> tf.reduce_mean(tensor, axis=1).eval() # 按行求均
    array([1.5, 3.5])
    >>> tf.reduce_mean(tensor, axis=1, keepdims=True).eval() # 按行求均同时保持维度不变
    array([[1.5],
            [3.5]])

优化目标函数,如何选择

通常,对于数据的训练,采用的都是mini-batch的方法,也就是传入的数据都是以一个batch的形式传入的,那么当我们设计目标函数的时候,对于误差应该如何传导?

L = ∑ ( . . . ) L = \sum(...) L=∑(...)
或者
L = 1 n ∑ ( . . . ) L = \frac{1}{n}\sum(...) L=n1​∑(...)

对于目标函数的设计,决定了使用的是tf.reduce_sum()或者tf.reduce_mean()
假设当前训练的真实数据y_data = [1.5, 2.5, 3.6],预测结果y_pred = [1, 2, 3]
我们使用平方误差来衡量y_data与y_pred之间的差异程度
对于前者:
L = ∑ ( . . . ) L = \sum(...) L=∑(...)

    >>> tf.reduce_sum(tf.square(y_pred - y_data)).eval() # loss
    0.86 # 0.25 + 0.25 + 0.36

对于后者:
L = 1 n ∑ ( . . . ) L = \frac{1}{n}\sum(...) L=n1​∑(...)
loss将会是原来的1/3即0.86 / 3 = 0.287

对于梯度的反向传导,使用前者(求和)的梯度将会是使用后者(求均)的梯度的3倍,那么如果你的学习率较大,可能会更新过快而导致跳过了最优点;相反,使用后者的时候也可能由于梯度更新过小而陷入局部极小值点,具体情况需要根据训练模型及优化器而定。

TensorFlow上实现Softmax回归模型 一、概述及完整代码 对MNIST(MixedNational Institute of Standard and Technology database)这个非常简单的机器视觉数据集,Tensorflow为我们进行了方便的封装,可以直接加载MNIST数据成我们期望的格式.本程序使用Softmax Regression训练手写数字识别的分类模型. 先看完整代码: import tensor 阅读详情

相关推荐

Proxmox VE网络配置踩坑实录:从Web界面无法访问到完美修复的全过程

本文详细记录了Proxmox VE服务器Web界面无法访问的完整排查与修复过程。作者从基础网络连通性测试入手,逐步排查了服务状态、SSL证书、端口监听、防火墙规则及网关配置,最终定位并解决了问题。文章提供了系统性的故障排查思路和实用的修复命令,对管理Proxmox VE网络具有重要参考价值。

weixin_29231221的博客 888

TensorFlow基础1:reduce_sum()函数和reduce_mean()函数

TensorFlow之reduce_sum()函数和reduce_mean()函数

闪电小飞侠 2万+

SD-WAN组网案例——数据中心

SD-WAN组网案例——数据中心

2301_78457663的博客 705

loss函数中,reduction参数的作用

当输入样本是一个批次(batch)的数据时,通常希望对整个批次的样本计算一个单一的损失值,以便进行梯度计算和参数更新。其中,reduction=‘none’ 表示不进行降维,即返回每个样本的损失值,而不对它们进行求和或平均。可以得到整个批次样本的平均损失,适用于对损失进行汇总,并用于指导整体模型的训练和优化。在 PyTorch 的损失函数中,reduction 参数用于指定损失的降维方式。可以得到整个批次样本的总和损失,适用于需要获得整个批次的总体损失值的情况。是常用的降维方式,在计算损失函数时使用。

加油加油加油加油 1748

射频工程师必须了解的S参数四项要点

本文围绕单端 6 英寸走线的 S 参数展开深入分析,核心包含四项关键要点:低频下导线电学长度远小于信号波长,S11 呈大负分贝值、S21 接近 0 分贝;端口与走线的阻抗不匹配引发反射叠加,形成 S11 首个峰值(对应传输线四分之一波长频率);S21 相位可作为一致性检查依据,其 90° 相位差与 S11 峰值吻合;理想建模中 S11 峰值随频率上升因损耗下降,实际测量因连接器等阻抗不连续性,S11 会出现振荡上升。分析依托 Keysight ADS 工具与电磁求解器原理,为 S 参数解读提供科学支撑。

一只豌豆象的博客 1284

从零开始构建AURIX TC397开发环境:硬件选型与IDE配置全攻略

本文详细介绍了如何从零开始构建AURIX TC397开发环境,涵盖硬件选型、IDE配置及外设驱动开发等关键步骤。针对TriCore架构的高性能特性,提供了开发板选型建议、AURIX Development Studio(ADS)安装配置指南,以及GPIO和CAN FD驱动的实战代码示例,帮助开发者快速上手TC397系列微控制器的开发工作。

7up55的博客 203

tf.reduce_mean()与tf.reduce_sum()

一、tf.reduce_mean()用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。 reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_i...

csweettea的博客 421

MSTAR数据集下载地址及处理方法

首先感谢博主冯子材提供下载的百度网盘地址。 在这里为了防止侵权,特此鸣谢,并给出其博客地址。 地址中有MSTAR百度网盘下载地址和需要使用的数据介绍,其中百度网盘中有数据转换工具 https://blog.csdn.net/taifengzikai/article/details/80600355 工具使用 因为下载得到的数据是二进制文件,需要使用官方提供的工具进行转换,可将其转换为jpeg。 有...

KamenRider 1万+

tf.reduce_mean tf.reduce_sum优化目标函数时如何选择

https://blog.csdn.net/Edisonleeee/article/details/96428155?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&utm_source=distribute.pc_relevant.none-task-blog-BlogComm...

studyvcmfc的专栏 227

告别复杂配置!5分钟在Vue/React项目中集成讯飞语音听写WebSocket API

本文详细介绍了如何在Vue/React项目中快速集成讯飞语音听写WebSocket API,实现高效语音识别功能。通过对比不同通信方案,突出WebSocket在实时语音交互中的优势,并提供框架适配、音频处理及性能优化等关键技术点,帮助开发者5分钟内完成专业级语音听写功能集成。

weixin_28730353的博客 274

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

tensorflow学习之常用函数:tf.reduce_mean,tf.reduce_sum

前沿 学习TensorFlow的时候,经常要编写损失函数的代码,经常需要用到tf.reduce_mean,tf.reduce_sum等函数。 reduce_max 求最大值tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None) 参数1--input_tensor:待求值的tensor。 ...

comway_Li的博客 1487

NVIDIA Jetson之交叉编译工具

参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=33630 用TX2做红外热成像仪的识别,厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器 由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下 交叉编译知识 一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编...

ZONGXP的博客 8383

tf.argmax() tf.equal() tf.nn.softmax() eval tf.random_normal tf.reduce_mean tf.reduce_sum

先将几个 函数 然后用代码测试一下 tf.reduce_sum input_tensor沿着给定的尺寸缩小axis。除非keepdims是真的,否则每个条目的张量等级减少1 axis。如果keepdims为真,则缩小尺寸将保留长度为1。 如果axis为None,则减小所有尺寸,并返回具有单个元素的张量。 tf.reduce_sum( input_tensor, ...

UESTC_201722的博客 913

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

cross_entropy = -tf.reduce_mean( y_* tf.log(y))

交叉熵学习: 神经网络模型的效果以及优化目标是通过损失函数(loss function)来定义的。分类问题和回归问题有很多经典的损失函数。 分类问题和回归问题是监督学习的两大种类。 分类问题希望解决的是将不同的样本分到事先定义好的类别中。再这种问题下,需要将样本二分类(多分类)。手写字体识别就是一个十分类的问题。 再判断二分类问题的时候,可以定义一个有单个输出节点的神经网络,当这个节点输出越接近1...

linrongdun的博客 837

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TensorFlow2-高阶操作(三):数据统计【tf.norm(范数)、tf.reduce_max(最大值)、tf.argmax(最值索引)、tf.equal(张量比较)、tf.unique独特值】

TensorFlow2数据统计函数: tf.norm(范数) tf.reduce_min/max(最大值/最小值) tf.argmax/argmin(最大值/最小值的位置) tf.equal(两个张量的比较) tf.unique(独特值) 一. tf.norm(范数) 1、范数定义 2、tf.norm(二范数) 如果不指定tf.norm()中的参数ord,那么默认为求二范数(注: 这里只讨论向量的范数,不讨论矩阵的范数) a = tf.ones([2, 2]): 创建一个2×2元素值都为1的Te

u013250861的博客 3905

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

tensorflow的一些函数说明

tf.placeholder函数说明 dtype——数据类型,如tf.float32,tf.float64 shape——数据形状,一维值None,多维[2,3]、[None,3] name——名称 placeholder函数意义:placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据 tf.Variable()函数说明 tf

qq_41780710的博客 409

tensorflow的reduce函数系列维度解析

tf.reduce_mean/tf.reduce_sum/tf.reduce_max/tf.reduce_min等等函数的参数中都有一个axis的问题,当axis=None时,看成是对所有元素进行mean/sum/max等等操作,最终结果为一个数。但当axis有值时,表示要操作的维度,但什么是要操作的维度呢?理解了半天,最后画了张图(运行tf.reduce_sum)进行解析: 如图所示,以三...

子妮姐的技术世界 623

TensorFlow隐藏能力:tf.data、tf.function与SavedModel工程实践

计算图是深度学习框架的核心抽象,它将模型逻辑转化为可复现、可部署、跨平台执行的确定性结构。TensorFlow并非仅提供高层API的训练工具,其本质是一个以图优先的计算系统,强调设备无关抽象、数据-模型协同优化与服务契约标准化。通过tf.data构建可版本化、可压测的数据流水线,利用tf.function实现Python逻辑到可序列化图的精准翻译,并依托SavedModel封装含SignatureDef的服务接口,TensorFlow支撑起从边缘端实时推理到联邦学习、大规模推荐系统的工业级落地。本文聚焦这三

tomfish 385

tensorflow中一些常见的函数(持续更新)

1.tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32。 tf.cast(x, dtype, name=None) 第一个参数 x: 待转换的数据(张量) 第二个参数 dtype: 目标数据类型 第三个参数 name: 可选参数,定义操作的名称 **2.**tf.reduce...

qq_42754919的博客 255

Tensorflow详解

目录 tf.truncated_normal tf.random_normal tf.nn.conv2d tf.nn.max_pool tf.reshape tf.nn.softmax tf.reduce_sum tf.reduce_max,tf.reduce_mean tf.train.Optimizer tf.train.GradientDescentOptimizer tf.train.Ad...

m0_37931718的博客 227

(二)tensorflow入门之使用tensorflow预测一元一次函数的参数(梯度下降法)

首先需要讲一个东西,优化器Optimizer。我们Optimizer是一个抽象类,我们一般用其子类 GradientDescentOptimizer,一个基于梯度下降的优化器。 GradientDescentOptimizer的初始化函数如下: __init__( learning_rate, use_locking=False, name='GradientDescent...

xuzkbd的博客 615

【TensorFlow】常用函数方法列表

tf.nn.l2_loss()的用法 计算张量的误差值 sum(t**2)/2 l2_loss()这个函数的作用是利用L2范数来计算张量的误差值,但是没有开发并且只取L2范数的值的一半 函数: tf.nn.l2_loss( t, name=None ) 参数: t:一个张量(tensor),类型可以为:half, bfloat16, float32, float64 na...

机器学习初学者必看,关注我,一起了解机器学习 382

tf.function原理与实战:告别tf.Session的范式升级

计算图是深度学习框架的核心抽象,其执行机制直接决定模型性能与开发效率。TensorFlow 1.x依赖显式Session管理图构建、执行与资源生命周期,导致调试困难、扩展受限、部署割裂;而tf.function通过JIT编译、AutoGraph控制流转换和缓存化图执行,将Python函数无缝升格为高性能可部署单元。它不仅封装了图编译细节,更重构了内存调度、梯度追踪与混合精度支持等底层逻辑,使开发者得以回归直观的函数式编程习惯。本文聚焦tf.function的追踪-编译-缓存三阶段机制、input_signa

congju3179的博客 429

Tensorflow读代码笔记(一)

Tensorflow代码笔记(一) tf.app.run 函数入口,类似于c/c++中的main(),大概意思是通过处理flag解析,然后执行main函数。 有两种情况: · 如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test) · 如果你的代码中的入口函数叫main(),则你就可以把入口写成tf.app.run() tf.Graph().as_default() tf.Graph() 表示实例化了一个类,一个用于 tensor

qq_43250196的博客 313

tensorflow 的一些常用函数

import tensorflow as tf import numpy as np A = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) # 一维 random_unifrom 代表产生的值是均匀分布的 tf.random_normal() # 正态分布 “”" tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数...

iwannagrowup__1025的博客 217
上一篇: 如何防止打开终端Conda默认激活基本环境
下一篇: Python画高斯分布图 (2D, 3D)
EdisonLeejt
博客等级 码龄9年 70粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值