1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

本题就是模拟 LSTM 的前向传播过程。先读取长度为 TTT 的输入序列,每个时间步包含 BBB 个样本,每个样本有 D=5D=5D=5 个特征。然后读取输入门、遗忘门、输出门、候选细胞状态四组参数。

初始时隐藏状态和细胞状态都为 0。对于每个时间步,依次计算输入门、遗忘门、输出门和候选细胞状态,再用它们更新当前细胞状态和隐藏状态。每一步的隐藏状态都需要保存,最后输出所有时间步的隐藏状态以及最终细胞状态。

关键算法是 LSTM 前向传播模拟,按时间顺序递推即可。

复杂度分析

#P4869.第2题-基于LSTM进行室内温度预测

    1000ms Tried: 422 Accepted: 147 Difficulty: 6
    算法与标签>机器学习算法

题目内容

【背景】

在现代智能家居系统中,准确预测室内温度变化对于实现舒适的居住环境和节能控制至关重要。室内温度受多种因素影响,包括室外温度、空调设定温度、门窗开关状态、室内人员数量等,这些因素之间存在复杂的非线性关系。 假设你正在开发一个智能温控系统,该系统通过传感器采集过去一段时间内的环境数据,使用 LSTMLSTMLSTM 模型预测未来时刻的室内温度。具体来说,系统每 555 分钟采集一次数据,包括以下 555 个特征:

  • 室内温度
  • 室外温度
  • 空调功率
  • 门窗开合状态
  • 室内人员数量

【任务】

请你基于过去 TTT 个时间步的这 555 个特征,使用 LSTMLSTMLSTM 模型学习温度变化的动态模式,输出每个时间步的隐藏状态和最终细胞状态。

LSTMLSTMLSTM 核心公式如下,其中 σ()\sigma()σ() 为sigmoid激活函数:

给定输入 xtx_txt​、上一时刻隐藏状态 ht−1h_{t-1}ht−1​、上一时刻细胞状态 ct−1c_{t-1}ct−1​:

  1. 遗忘门:ft=σ(Wf⋅[ht−1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)ft​=σ(Wf​⋅[ht−1​,xt​]+bf​)
  2. 输入门:it=σ(Wi⋅[ht−1,xt]+bi)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)it​=σ(Wi​⋅[ht−1​,xt​]+bi​)
  3. 候选细胞状态:c~t=tanh⁡(Wc⋅[ht−1,xt]+bc)\tilde{c}_t = \tanh(W_c \cdot [h_{t-1}, x_t] + b_c)c~t​=tanh(Wc​⋅[ht−1​,xt​]+bc​)
  4. 细胞状态更新:ct=ft⊙ct−1+it⊙c~tc_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_tct​=ft​⊙ct−1​+it​⊙c~t​
  5. 输出门:ot=σ(Wo⋅[ht−1,xt]+bo)o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)ot​=σ(Wo​⋅[ht−1​,xt​]+bo​)
  6. 隐状态更新:ht=ot⊙tanh⁡(ct)h_t = o_t \odot \tanh(c_t)ht​=ot​⊙tanh(ct​)
  7. 输出层:y^t=Wy⋅ht+by\hat{y}_t = W_y \cdot h_t + b_yy^​t​=Wy​⋅ht​+by​

计算中,本题中,上一时刻隐藏状态 ht−1h_{t-1}ht−1​、上一时刻细胞状态 ct−1c_{t-1}ct−1​ 均初始化为0。

输入描述

第一行:T,5,D,HT, 5, D, HT,5,D,H 共 444 个正整数,其中TTT为序列大小,BBB为批次大小(时间),DDD为输入特征维度,HHH为隐藏层维度,取值范围为 0<T<=1000 < T <= 1000<T<=100,0<B<=1000 < B <= 1000<B<=100,D=5D=5D=5,0<H<=100 < H <= 100<H<=10。

接下来 TTT 行:每行包含 B×DB \times DB×D 个浮点数,表示输入序列,按时间步顺序,每个时间步的数据按批次顺序排列(即先第 111 个房间的 DDD 个特征,再第 222 个房间的 DDD 个特征,依此类推)。

最后四行:分别对应输入门、遗忘门、输出门和候选细胞状态的参数,每行包含:

  • 输入权重(D×HD \times HD×H)、隐藏权重(H×HH \times HH×H)、偏置(HHH)的元素数
  • 所有参数按行优先顺序展平

注:所有输入的每个数之间用一个空格分隔,每行末尾无多余空格

输出描述

第一行:所有时间步的隐藏状态(T×B×HT \times B \times HT×B×H),按时间步顺序展平输出 第二行:最终细胞状态(B×HB \times HB×H),按批次顺序展平输出 注:所有浮点数保留 444 位小数(四舍五入),每个数之间用一个空格分隔,每行末尾无多余空格

样例1

输入

1 1 5 2
2.5 5.0 3.2 5.0 1
0.1 0.1 0.3 3.4 0.5 0.4 0.7 0.3 0.2 1.0 0.7 0.5
0.8 1.0 1.1 1.4
0.1 0.7 0.1 1.4 0.5 0.6 0.3 0.2 0.3 1.0 0.8 0.7
0.7 1.1 1.2 1.2
0.1 0.8 3.3 0.4 0.1 0.5 0.4 0.8 0.9 1.0 0.6 0.9
0.5 1.2 1.1 1.5
0.1 0.1 0.3 0.4 0.5 0.6 0.6 0.8 0.2 1.0 0.7 0.1
0.9 1.3 1.6 1.2

输出

0.7615 0.7616
0.9997 1.0000

说明

第一行:T=1,B=1,D=5,H=2T=1, B=1, D=5, H=2T=1,B=1,D=5,H=2:序列长度 111(111 个采样点),批次大小为 111(111 个独立房间),每个房间 555 维特征,隐藏层维度 222。

第二行:1×51×51×5大小的输入序列,房间1的特征:[2.5[2.5[2.5 5.05.05.0 3.23.23.2 5.05.05.0 1]1]1]

最后 444 行:各门参数:前5×25×25×2个数据为输入权重,其后2×22×22×2个数据为隐藏权重,最后 222 个为偏置项

输出:

第一行:1×1×21×1×21×1×2个数据,序列1的隐藏状态 [0.7615[0.7615[0.7615 0.7616]0.7616]0.7616]

第二行:最终细胞状态,输出 1×21×21×2 个数据

样例2

输入

2 2 5 1
21.0 25.0 22.0 25.5 1 21.0 25.0 22.0 25.5 2
22.0 26.0 20.5 24.0 2 22.0 26.0 20.5 24.0 1
0.1 0.15 0.2 0.1 0.15 0.3 0.3
0.4 0.45 0.5 0.4 0.45 0.5 0.6
0.7 0.6 0.8 0.7 0.6 0.8 0.9
1.0 0.9 1.1 1.0 0.9 1.1 1.2

输出

0.7616 0.7616 0.9640 0.9640
2.0000 2.0000

说明

  • 第一行:T=2,B=2,D=5,H=1T=2, B=2, D=5, H=1T=2,B=2,D=5,H=1:序列长度为 222(222 个采样点),批次大小为 222(222 个独立房间),每个房间 555 维特征,隐藏层维度为 111。
  • 接下来两行:分别为两个时间步的输入序列,每个时间步包含 222 个房间的 555 维特征。
  • 最后 444 行:各门参数,每行包含输入门、遗忘门、输出门和候选细胞状态的权重与偏置。
  • 输出:
    • 第一行:按时间步顺序展平输出所有时间步的隐藏状态,格式为 T×B×HT×B×HT×B×H,即 2×2×12×2×12×2×1,结果为 0.76160.76160.7616 0.76160.76160.7616 0.96400.96400.9640 0.96400.96400.9640。
    • 第二行:按批次顺序展平输出最终细胞状态,格式为 B×HB×HB×H,即 2×12×12×1,结果为 2.00002.00002.0000 2.00002.00002.0000。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
点击按钮后加载题目列表
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 3, 43ms
  3. Powered by Hydro v5.0.0-beta.18 Community

Don't have an account?

By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.

Sign Up Now
CLOSE

SIGN IN

Using your CodeFun2000 universal account

Login with Wechat
Forgot password or username?