6-4 函数的本质

6.4.1 C语言为什么会有函数

(1)整个程序分成多个文件(源文件),一个文件分成多个函数,一个函数分成多个语句,这就是整个程序的组织形式。这样组织的好处在于:分化问题、便于编写程序、便于分工。
(2)函数的出现是人(程序员和架构师)的需要,而不是机器(编译器、CPU)的需要。
(3)函数的目的就是实现模块化编程。说白了就是为了提供程序的可移植性。

6.4.2 函数书写的一般原则

第一,遵循一定格式;函数的返回类型、函数名、参数列表等。
第二,一个函数只做一件事;函数不能太长,也不宜太短。原则是一个函数只做一件事情。
第三,传参不宜过多;在ARM体系下,传参不宜超过4个,如果传参确实多则考虑结构体打包。
第四,尽量少碰全局变量;函数最好用传参返回值和外部交换数据,不要用全局变量。

6.4.3 函数是动词、变量是名词(面向对象中分别叫方法和成员变量)

(1)函数将来被编译成可执行代码段,变量(主要指全局变量)经过编译后变成数据或者在运行时变成数据。一个程序的运行需要代码和数据两方面的结合才能完成。
(2)代码和数据需要彼此配合,代码是为了加工数据,数据必须借助代码来起作用。拿现实中的工厂来比喻:数据是原材料,代码是加工流水线。名词性的数据必须经过动词性的加工才能变成最终我们需要的产出的数据。这个加工的过程就是程序的执行过程。

6.4.4 函数的实质是:数据处理器

(1)程序的主体是数据,也就是说程序运行的主要目标是生成目标数据,我们写代码也是为了目标数据。我们如何得到目标数据?必须2个因素:原材料 + 加工算法。原材料就是程序的输入数据,加工算法就是程序。
(2)程序的编写和运行就是为了把原数据加工成目标数据,所以程序的实质就是一个数据处理器。
(3)函数就是程序的一个缩影:函数的参数列表其实就是为了给函数输入原材料数据,函数的返回值和输出型参数就是为了向外部输出目标数据,函数的函数体里的那些代码就是加工算法。
(4)函数在静止没有执行(乖乖的躺在硬盘里)的时候就好像一台没有开动的机器,此时只占一些存储空间但是并不占用资源(CPU + 内存);函数的每一次运行就好像机器的每一次开机运行,运行时需要耗费资源(CPU + 内存),运行时可以对数据加工生成目标数据;函数运行完毕会释放占用的资源。
(5)整个程序的运行其实就是很多个函数相继运行的连续过程。

在深度学习中,激活函数是神经网络模型的重要组成部分,用于引入非线性特性,使模型能够拟合复杂的函数关系。常见的激活函数包括Sigmoid、ReLU、Tanh、Softmax等,它们广泛应用于各类神经网络架构中[^1]。 **Tan-Sigmoid函数**通常指的是将Tanh和Sigmoid两种激活函数进行组合使用的结构。例如,在某些神经网络设计中,一个神经元的输出可能同时受到Tanh和Sigmoid函数的影响,这种组合形式可以增强模型对输入信号的表达能力。虽然“tan-sigmoid”本身并不是一个标准的激活函数名称,但其构成元素(Tanh和Sigmoid)均属于深度学习中经典的激活函数范畴[^2]。 具体而言: - **Sigmoid函数**:定义为 σ(x) = 1 / (1 + e^(-x)),常用于二分类问题的输出层,能将实数映射到(0,1)区间。 - **Tanh函数**:定义为 tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x)),与Sigmoid类似,但输出范围为(-1,1),具有更强的中心对称性,有助于梯度传播[^3]。 在某些网络结构中,这两种函数可能会被并行使用或串联组合,以提升模型的表现力。例如,在门控循环单元(GRU)或长短期记忆网络(LSTM)中,Sigmoid函数用于控制信息流的开关,而Tanh则用于生成候选状态,这本质上是一种组合式的激活机制[^4]。 ### 示例代码:构建一个使用Sigmoid和Tanh组合的简单神经网络 ```python import torch import torch.nn as nn class TanSigmoidNetwork(nn.Module): def __init__(self): super(TanSigmoidNetwork, self).__init__() self.linear = nn.Linear(10, 1) def forward(self, x): # 使用Tanh和Sigmoid的组合 tanh_out = torch.tanh(x) sigmoid_out = torch.sigmoid(x) combined = tanh_out * sigmoid_out # 可自定义组合方式 output = self.linear(combined) return output # 实例化模型 model = TanSigmoidNetwork() ``` 综上所述,**tan-sigmoid函数并不直接作为一个独立的激活函数存在,但其构成部分(Tanh和Sigmoid)均属于深度学习中的标准激活函数**。当它们以某种形式组合使用时,可以被视为一种复合激活机制,用于增强神经网络的建模能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非主流的豆瓣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值