这道题要求我们根据题目给定的自适应序列融合算法公式,手动完成前向传播,并输出最终状态 sT。
题目已经明确:
小张在开发一个音频处理系统,需要设计一个能够自适应地融合历史状态与当前输入信号的动态混合器。该混合器在每个时间步通过两个控制因子——衰减因子 ft 和混合因子 ut——来调整信息的流动,并以此生成新的内部状态 st。请你帮助她实现该混合器的前向计算过程。
对于每个时间步 t=1,2,…,T,计算:
ft=σ(xtAf+st−1Bf+cf) ut=σ(xtAu+st−1Bu+cu) s~t=tanh(xtAs+(ft⊙st−1)Bs+cs) st=(1−ut)⊙st−1+ut⊙s~t其中 σ(x)=1/(1+e−x),⊙ 表示逐元素乘积,tanh 为双曲正切函数。
所有参数以列拼接形式存储,便于计算:
A=[Af∣Au∣As]∈Rd×3h B=[Bf∣Bu∣Bs]∈Rh×3h c=[cf∣cu∣cs]∈R3h其中 d 为输入维度,h 为状态维度,T 为时间步数。s0 为初始状态。最终需计算并输出 sT。
数据规模:输入维度 d、状态维度 h 以及时间步数 T 均不超过 3。所有运算使用双精度浮点数,结果保留 6 位小数(四舍五入)。
输入包含一行 JSON 字符串,表示一个字典,其字段包括:
Wx:二维数组,形状为 [d, 3h],即矩阵 A;Wh:二维数组,形状为 [h, 3h],即矩阵 B;b:一维数组,长度为 3h,即向量 c;h0:一维数组,长度为 h,即初始状态 s0;X:二维数组,形状为 [T, d],按时间顺序排列的输入序列 x1 到 xT。
所有元素均为数值,无缺失值。输出一行,包含一个浮点数列表,格式为 [v1, v2, ...],表示最终状态 sT。每个元素使用四舍五入保留 6 位小数。
输入
{"Wx":[[0,0,0,0,0,0]],"Wh":[[0,0,0,0,0,0],[0,0,0,0,0,0]],"b":[0,0,0,0,0,0],"h0":[1,2],"X":[[0]]}
输出
[0.5, 1.0]
说明
所有权重与偏置均为 0,因此对于唯一的时间步 t=1 有 x1=[0] 、 s0=[1,2] 。\n\n计算控制因子:f1=σ(0)=0.5,u1=σ(0)=0.5,候选状态 s~1=tanh(0)=0。\n\n更新状态:s1=(1−0.5)⊙s0+0.5⊙s~1=0.5⊙s0,即每个分量变为原来的一半,得到 [0.5,1.0],输出时保留 6 位小数。
输入
{"Wx":[[0,0,0]],"Wh":[[0,0,0]],"b":[0,0,0],"h0":[1],"X":[[0],[0]]}
输出
[0.25]
说明
参数全零,输入序列 x1=x2=[0],初始状态 s0=[1]。\n\n第 1 步:f1=u1=0.5,s~1=0,故 s1=0.5⋅s0=[0.5]。\n\n第 2 步:同理 f2=u2=0.5,s~2=0,s2=0.5⋅s1=[0.25]。\n\n最终状态为 [0.25]。
输入
{"Wx":[[0,0,1]],"Wh":[[0,0,0]],"b":[0,0,0],"h0":[0],"X":[[1]]}
输出
[0.380797]
说明
参数中仅 As=[1],其余为 0。输入 x1=[1],初始状态 s0=[0]。\n\n门控值:f1=σ(0)=0.5,u1=σ(0)=0.5。\n\n候选状态:s~1=tanh(x1As)=tanh(1)≈0.761594(双精度)。\n\n更新:s1=(1−0.5)×0+0.5×0.761594=0.380797,四舍五入保留 6 位小数输出。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.