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

第2题-基于LSTM进行室内温度预测 - problem_ide - CodeFun2000

【LSTM系列·第一篇】彻底搞懂:细胞状态、隐藏状态、候选状态、遗忘门------新手最晕的4个概念,一篇厘清_lstm遗忘门-CSDN博客

python 复制代码
import sys
import numpy as np
import math



def func():
    data = sys.stdin.read().split()
    if not data:
        return

    T = int(data[0])
    B = int(data[1])
    D = int(data[2])
    H = int(data[3])
    idx = 4
    X = np.zeros((T, B, D), dtype=np.float64)


    for t in range(T):
        row = list(map(float, data[idx: idx + B * D]))
        idx += B * D
        X[t] = np.array(row).reshape(B, D)
    
    total_param_per_gate = D*H+H*H+H
    gates = ['i','f','o','g']
    params = {}

    for gate in gates:
        param_vals = list(map(float,data[idx:idx+total_param_per_gate]))
        
        idx += total_param_per_gate 
        Wx = np.array(param_vals[:D*H]).reshape(D,H)
        Wh = np.array(param_vals[D*H:D*H+H*H]).reshape(H,H)
        b = np.array(param_vals[D*H+H*H:]).reshape(H,)
        params[gate] = (Wx,Wh,b)
    
    h_prev = np.zeros((B,H),dtype=np.float64)
    C_prev = np.zeros((B,H),dtype=np.float64)

    all_h = []

    # def sigmoid(x):
    #     x = np.clip(x,-500,500)
    #     return 1/(1+np.exp(-x))
    

    def sigmoid(x):
        x = np.array(x,dtype=float)
        result = np.empty_like(x)
        mask = (x>=0)
        result[mask] = 1/(1+np.exp(-x[mask]))
        result[~mask] = np.exp(x[~mask])/(1+np.exp(x[~mask]))

        return result
    
    for t in range(T):
        x_t = X[t]  # (B,D)
        Wx_i,Wh_i,b_i = params['i']
        Wx_f,Wh_f,b_f = params['f']
        Wx_o,Wh_o,b_o = params['o']
        Wx_g,Wh_g,b_g = params['g']

        i_t = sigmoid(x_t @ Wx_i + h_prev @ Wh_i + b_i)
        f_t = sigmoid(x_t @ Wx_f + h_prev @ Wh_f + b_f)
        o_t = sigmoid(x_t @ Wx_o + h_prev @ Wh_o + b_o)
        g_t = np.tanh(x_t @ Wx_g + h_prev @ Wh_g + b_g)

        C_t = f_t*C_prev+i_t*g_t
        h_t = o_t*np.tanh(C_t)

        all_h.append(h_t.copy())

        h_prev = h_t
        C_prev = C_t

    all_h = np.array(all_h)
    final_C = C_prev

    h_flat = all_h.reshape(-1)
    C_flat = final_C.reshape(-1)

    h_flat = np.round(h_flat,4)
    C_flat = np.round(C_flat,4)

    h_str = ' '.join(f"{x:.4f}" for x in h_flat)
    C_str = ' '.join(f"{x:.4f}" for x in C_flat)

    print(h_str)
    print(C_str)

if __name__ == '__main__':
    func()
相关推荐
码士集团小青14 小时前
YOLO:将AI Agents嵌入到IntelliJ IDEA
人工智能
yanghuashuiyue14 小时前
RNN结构记录
人工智能·rnn·深度学习
mennekes14 小时前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
IT_陈寒14 小时前
Vue的响应式什么时候会失灵?这个坑我踩了
前端·人工智能·后端
Mark-Wang15 小时前
2026大厂AI Agent高频面试题Top50:题目+参考答案+追问陷阱
人工智能
五度易链-区域产业数字化管理平台15 小时前
WorkBuddy 实战:将带 MD5 签名的第三方 API 封装为 MCP 服务(企业模糊搜索接口案例)
大数据·人工智能·mcp
怪奇云呼军15 小时前
知识库也会注入指令?闪电智能VoiceAgent 如何防住 Prompt Injection
人工智能·python·算法·云计算·音视频
xushichang123_15 小时前
企业降本刚需下,云上模型蒸馏与轻量化部署怎么选?AWS“大模型教研+小模型推理” 路径
大数据·人工智能
EasyDSS16 小时前
开会不用装App:私有化音视频系统EasyDSS即时视频会议,浏览器点开就能聊,AI帮你写纪要
人工智能·音视频
阿里云大数据AI技术16 小时前
基于 EMR Serverless Ray 实现 Qwen 模型批量推理实践
人工智能·算法·agent