题目要实现的是经典的 Sigmoid 函数:
σ(x)=1+e−x1当输入是向量 x=[x1,x2,…,xn] 时,只需要对每个元素 xi 分别套用这个公式,得到对应的输出 yi。
直接用公式实现即可,但需要注意数值稳定性:
常用的数值稳定写法是:
若 x≥0: σ(x)=1+e−x1
若 x<0: σ(x)=1+exex
这样可以避免在指数函数里出现过大的正数,从而提升数值稳定性。
class Solution:
def sigmoid(self, x: list[float]) -> list[float]:
"""
计算输入向量的 Sigmoid 值。
"""
result: list[float] = []
for value in x:
# 将输入转换为浮点数以保证计算稳定
v = float(value)
if v >= 0.0:
# 数值稳定版本:对非负数使用 1 / (1 + exp(-x))
z = math.exp(-v)
result.append(1.0 / (1.0 + z))
else:
# 数值稳定版本:对负数使用 exp(x) / (1 + exp(x))
z = math.exp(v)
result.append(z / (1.0 + z))
return result
给定输入标量或向量 x,Sigmoid 函数定义为:
σ(x)=1+e−x1Sigmoid 输出的范围为 (0,1),常用于二分类模型的输出层。
若输入为向量:
x=[x1,x2,…,xn]则逐元素应用 Sigmoid:
σ(xi)=1+e−xi1当 xi<0,
σ(xi)=1+exi1输入参数:
x: 输入向量,长度n。n: 输入维度。返回值:
y:Sigmoid 输出向量输入:
x = [0.0, 1.0, -2.0]
输出:
y = [0.5, 0.7311, 0.1192]
−1000≤xi≤1000
0<yi<1
n≥1