首页 > 其他分享 >每日笔记-LSTM

每日笔记-LSTM

时间:2024-02-20 20:44:06浏览次数:26  
标签:hidden 每日 torch 笔记 input LSTM data self size

今天,搞了一段代码,但没有达到应有的效果

import torch
import torch.nn as nn
import numpy as np

# 设置随机种子以便结果可重复
torch.manual_seed(42)

# 定义一个更复杂的LSTM模型
class ComplexLSTMModel(nn.Module):
    def __init__(self, input_size, hidden_size, output_size):
        super(ComplexLSTMModel, self).__init__()
        self.hidden_size = hidden_size
        self.lstm = nn.LSTM(input_size, hidden_size, num_layers=2)  # 增加了一个LSTM层
        self.fc = nn.Linear(hidden_size, output_size)

    def forward(self, input):
        lstm_out, _ = self.lstm(input.view(len(input), 1, -1))
        output = self.fc(lstm_out.view(len(input), -1))
        return output[-1]

# 准备数据
input_size = 1
hidden_size = 8  
output_size = 1
lr = 0.01
num_epochs = 100 

# 生成一些示例数据
data = np.sin(np.arange(0, 100, 0.1))

# 定义模型、损失函数和优化器
model = ComplexLSTMModel(input_size, hidden_size, output_size)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=lr)

# 训练模型
for epoch in range(num_epochs):    
    inputs = torch.Tensor(data[:-1]).view(-1, 1, 1)
    labels = torch.Tensor(data[1:])

    optimizer.zero_grad()
    outputs = model(inputs)

    loss = criterion(outputs, labels)
    loss.backward()
    optimizer.step()

    if (epoch+1) % 10 == 0:
        print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')

# 预测
with torch.no_grad():
    future = 100
    # 用训练数据最后一个数据点开始预测
    pred_data = [data[-1]]
    for _ in range(future):
        inputs = torch.Tensor([pred_data[-1]]).view(-1, 1, 1)
        pred = model(inputs)
        pred_data.append(pred.item())

# 绘制结果
import matplotlib.pyplot as plt
plt.plot(data, label='Original data')
plt.plot(np.arange(len(data)-1, len(data) + future), pred_data, label='Predictions')
plt.legend()
plt.show()

  结果如图:

 没有达到想象的效果

标签:hidden,每日,torch,笔记,input,LSTM,data,self,size
From: https://www.cnblogs.com/kingkaixuan/p/18024004

相关文章

  • Miniconda 安装和使用笔记
    Miniconda是Anaconda的简化版,可以管理多个Python版本的环境.实际使用的话,占用的空间不会很小,我跑一些正常的应用后,安装目录占用空间4.3GB,安装建议要预留10到20G的空间.安装Miniconda下载安装包https://docs.anaconda.com/free/miniconda/历史版本https://repo.a......
  • 组合数学学习笔记
    p3744.打扑克直接递推了。p3745.combination使用卢卡斯定理切掉。longlongc(longlongn,longlongm){ returnf[n]*g[m]*g[n-m]%mod;}longlonglcs(longlongn,longlongm){ if(m==0) return1; returnlcs(n/mod,m/mod)*c(n%mod,m%mod)%mod;}3342.【模......
  • 数论学习笔记
    如题。链接:https://h.hszxoj.com/d/hzoj/training/64ae62d5016fac9fb4da7086?uid=4823336.cf1444A洛谷link小数学题。gxyz上的很好A,但是CF上的数据确实超级大。先判断\(\displaystyleq/p\)是否成立,若不成立则直接cout<<p;否则就要遍历\(q\)的质因数,然后再找对应质......
  • 递归学习笔记
    本文同步发表在洛谷博客我们充分发扬人类智慧:将递推和递归混为一谈在\(dp\)的基础上来学递归然后把递推和\(dp\)混为一谈然后我就发现:™的我\(dp\)没学好!然后去学\(dp\),然后发现我递推没学好,所以四舍五入我递归也学不好,那就不学了!好了让我们步入正题正文......
  • 高斯消元 学习笔记
    \[\Large\text{GaussianElimination}\]数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。——百度百科说实话,我不相信这是高斯发明的。感觉像是个小学生都学过的加减消元法。它的时间复杂度与方程个数、未知数个数有关,一般来讲,是\(O......
  • Vue学习笔记 1-- 环境搭建
    第一步:安装vscode第二步:安装nodejs--node-v14.17.6-x64(需要注意版本--版本过高或过低均会导致程序打包运行问题)——一路默认,会安装对应的npm注:版本和程序中使用的依赖包不一致会导致各种打包异常......,因此需根据自身项目实际情况安装对应版本==>程序打包问题npmi/npmi......
  • C++ 模板的笔记2
    C++模板的笔记2关于可变参函数模板借鉴了一部分笔记,感谢大佬类模板中的嵌套类模板可以嵌套其他类模板,就像普通类可以嵌套其他普通类一样。嵌套的类模板可以访问外部类模板的成员,包括私有成员。示例:#include<iostream>usingnamespacestd;template<typenameT>classO......
  • 解决方案 | 笔记本电脑能连上WIFI,但是无Internet显示地球图标,怎么回事?(win10)
    一、背景任务栏托盘区显示地球图标,但是实际上可以上网。   疑难诊断一般是这种情况: 二、可能的有效解决方案 0方案0:使用360断网急救箱傻瓜式修复个人制作|360断网急救箱新版-2.0版单文件绿色版分享(解决99%的电脑无法上网问题)https://www.cnblogs.com/issacne......
  • [学习笔记]哈希与哈希表
    1.定义我们定义一个把字符串映射到整数的函数\(f\),这个\(f\)称为是Hash函数。我们希望这个函数\(f\)可以方便地帮我们判断两个字符串是否相等。词汇“映射”映射意为将一个集合中的任意元素和另一个集合中的元素一一对应。(请大佬指正)2.思想Hash的核心思想在于,将输入......
  • Go语言精进之路读书笔记第30条——使用接口提高代码的可测试性
    Go语言有一个惯例是让单元测试代码时刻伴随着你编写的Go代码。单元测试是自包含和自运行的,运行时一般不会依赖外部资源(如外部数据库、外部邮件服务器等),并具备跨环境的可重复性(既可在开发人员的本地运行,也可以在持续集成的环境中运行)。30.1实现一个附加免责声明的电子邮件发送函......