分享好友 人工智能首页 频道列表

深度学习 循环神经网络 LSTM 示例 - Hello_BeautifulWorld

循环神经网络  2023-02-09 19:327430

深度学习 循环神经网络 LSTM 示例

 最近在网上找到了一个使用LSTM 网络解决  世界银行中各国 GDP预测的一个问题,感觉比较实用,毕竟这是找到的唯一一个可以正确运行的程序。

 

 

 

#encoding:UTF-8

import pandas as pd
from pandas_datareader import wb

import torch
import torch.nn
import torch.optim

#读取数据
countries = [\'BR\', \'CA\', \'CN\', \'FR\', \'DE\', \'IN\', \'IL\', \'JP\', \'SA\', \'GB\', \'US\',]
dat = wb.download(indicator=\'NY.GDP.PCAP.KD\',
        country=countries, start=1970, end=2016)

df = dat.unstack().T
df.index = df.index.droplevel(0).astype(int)
#print(df)




#搭建神经网络 class Net(torch.nn.Module): def __init__(self, input_size, hidden_size): super(Net, self).__init__() self.rnn = torch.nn.LSTM(input_size, hidden_size) self.fc = torch.nn.Linear(hidden_size, 1) def forward( self, x): x = x[:, :, None] x, _ = self.rnn(x) x = self.fc(x) x = x[:, :, 0] return x net = Net(input_size=1, hidden_size=5) #print(net) #训练神经网络 # 数据归一化 df_scaled = df / df.loc[2000] # 确定训练集和测试集 years = df.index train_seq_len = sum((years >= 1971) & (years <= 2000)) test_seq_len = sum(years > 2000) print (\'训练集长度 = {}, 测试集长度 = {}\'.format( train_seq_len, test_seq_len)) # 确定训练使用的特征和标签 inputs = torch.tensor(df_scaled.iloc[:-1].values, dtype=torch.float32) labels = torch.tensor(df_scaled.iloc[1:].values, dtype=torch.float32) # 训练网络 criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(net.parameters()) for step in range(10001): if step: optimizer.zero_grad() train_loss.backward() optimizer.step() preds = net(inputs) train_preds = preds[:train_seq_len] train_labels = labels[:train_seq_len] train_loss = criterion(train_preds, train_labels) test_preds = preds[-test_seq_len] test_labels = labels[-test_seq_len] test_loss = criterion(test_preds, test_labels) if step % 500 == 0: print (\'第{}次迭代: loss (训练集) = {}, loss (测试集) = {}\'.format( step, train_loss, test_loss)) preds = net(inputs) df_pred_scaled = pd.DataFrame(preds.detach().numpy(), index=years[1:], columns=df.columns) df_pred = df_pred_scaled * df.loc[2000] df_pred.loc[2001:]

 

查看更多关于【循环神经网络】的文章

展开全文
相关推荐
反对 0
举报 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
第六讲 循环神经网络--LSTM--stock
1 !pip install tushare2 import tushare as ts3 import numpy as np4 import tensorflow as tf5 from tensorflow.keras.layers import Dropout, Dense, LSTM6 import matplotlib.pyplot as plt7 import os8 import pandas as pd9 from sklearn.preprocessing

0评论2023-02-10476

基于循环神经网络的图像特定文本抽取方法
 作者的模型整体框架包含两部分,分别为OCR 部分 (采用人家的模型, 输出文本)特定文本抽取部分 (作者的工作)1. 引言早期图像特定文本抽取主要是通过 OCR 中的版面分析(Layout analysis)来实现。即首先利用 版面分析 的方法得到图像中特定的文本区域,然后

0评论2023-02-09946

更多推荐