关于LSTM小白的一些心得

博主分享了自己使用LSTM神经网络模型进行客流预测的体验,详细探讨了为何选择LSTM,列举了LSTM的特点,并提供了一个简单示例,尽管存在一些不足。文章还推荐了一篇关于飞机客流预测的博客作为进一步阅读材料。
摘要由CSDN通过智能技术生成

关于使用LSTM模型实现客流预测的自我总结

鉴于我写下这篇博客只是为了自己以后回头查错记录之用,所涉及的代码或是技术均可能出现较大误差,若有人想要了解或学习相关内容,请不要过多参考代码,除此之外,如有热心大佬积极留言,小白在此叩头感谢!
长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。

各类神经网络之间比较

自互联网问世以来,人们对于机器大脑与生物大脑的探究就一直没有停止过,随之面世的各种针对于处理各种不同问题的神经网络也如雨后春笋般层出不穷,小白我也初涉不深,耳熟能详的GAN、RNN、CNN等神经网络当然也各有千秋,在此便不一一赘述,
[详情请参考此大佬

](https://blog.csdn.net/gaussrieman123/article/details/79129299%29)

为什么使用LSTM神经网络模型处理客流预测

大家都有过去乘坐地铁出勤的经历吧,早晚高峰的场面估计也是见怪不怪吧!出现这种情况的主要原因便是客流中心无法根据实时的客流量情况来有效的调动地铁运行状态。大致就会出现这样一种奇怪的现状——  即是有的候车位人满为患,有的却是“门可罗雀”情形。
客流预测模型所需要的神经网络与其他神经网络有一个需求极大的地方——时间片功能与基于上个时间记忆功能从而做出预测的动作。客流预测对于时间的间隔要求比起一般的图像或者是文字识别更为苛刻。人流量的变动与车辆之间的调动必须要紧密联系在一起。并且其还有一个特点是——所要求的时间间隔必须足够小!我们大家都知道,如同成都、上海之流的大城市,人口流量以及人流单位时间内的变化是一个可怕的概念,更不必说早晚高峰这种极端情况,这就对于我们的神经网络有着时间间隔的要求!
LSTM特点
说了这么多,我们还是来谈谈LSTM到底有哪些优点吧!首先来说,LSTM模型在关于时间片的间隔这一方面来说,做客流预测就非其不可!同时,其对于向前数据的更好的分析而实现对下一时刻数据的预测这块儿也有着得天独厚的优势!着重体现的便是LSTM的特殊结构——遗忘门、输入门、输出门。其通过一系列的实现最终可以完成时间循环学习并达到预测的效果!
详见[借用一下大佬见解](https://blog.csdn.net/zhangbaoanhadoop/article/details/81952284%29)

最后谈谈

LSTM神经网络是在RNN神经网络的基础上优化而来,解决了RNN模型有关的梯度消失而难以处理较长数据列的问题,现如今不论是科学研究或是工业现代化上均已广泛引用。所以其学习必要十分明显!
小白我当前也只是做到粗略理解其概念,盼今后再接再厉!下面贴上自己的一段代码(错的啦):
import random


import numpy as np
import math

def sigmoid(x): 
    return 1. / (1 + np.exp(-x))

def sigmoid_derivative(values): 
    return values*(1-values)

def tanh_derivative(values): 
    return 1. - values ** 2

#createst uniform random array w/ values in [a,b) and shape args
def rand_arr(a, b, *args): 
    np.random.seed(0)
    return np.random.rand(*args) * (b - a) + a

class LstmParam:
    def __init__(self, mem_cell_ct, x_dim):
        self.mem_cell_ct = mem_cell_ct
        self.x_dim = x_dim
        concat_len = x_dim + mem_cell_ct
        # weight matrices
        self.wg = rand_arr(-0.1, 0.1, mem_cell_ct, concat_len)
        self.wi = rand_arr(-0.1, 0.1, mem_cell_ct, concat_len) 
        self.wf = rand_arr(-0.1, 0.1, mem_cell_ct, concat_len)
        self.wo = rand_arr(-0.1, 0.1, mem_cell_ct, concat_len)
        # bias terms
        self.bg = rand_arr(-0.1, 0.1, mem_cell_ct) 
        self.bi = rand_arr(-0.1, 0.1, mem_cell_ct) 
        self.bf = rand_arr(-0.1, 0.1, mem_cell_ct) 
        self.bo = rand_arr(-0.1, 0.1, mem_cell_ct) 
        # diffs (derivative of loss function w.r.t. all parameters)
        self.wg_diff = np.zeros((mem_cell_ct, concat_len)) 
        self.wi_diff = np.zeros((mem_cell_ct, concat_len)) 
        self.wf_diff = np.zeros((mem_cell_ct, concat_len)) 
        self.wo_diff = np.zeros((mem_cell_ct, concat_len)) 
        self.bg_diff = np.zeros(mem_cell_ct) 
        self.bi_diff = np.zeros(mem_cell_ct) 
        self.bf_diff = np.zeros(mem_cell_ct) 
        self.bo_diff = np.zeros(mem_cell_ct) 

    def apply_diff(self, lr = 1):
        self.wg -= lr * self.wg_diff
        self.wi -= lr * self.wi_diff
        self.wf -= lr * self.wf_diff
        self.wo -= lr * self.<
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值