RNN之seq2seq模型

本文介绍了RNN模型的四种结构,并重点讲解了seq2seq模型,这是一种用于处理输入输出序列不等长问题的many to many结构。通过Encoder-Decoder模型将输入编码为固定维数的向量,再解码为输出。文中还展示了seq2seq模型在股票收盘价预测中的应用,训练过程中loss值的变化以及实际预测效果,表明该模型在股票预测上具有一定的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.RNN模型概述

RNN大致可以分为4种,输出和输入序列不同数量rnn可以有多种不同的结构,不同结构自然就有不同的引用场合。

如下图所示:

one to one 结构: 仅仅只是简单的给一个输入得到一个输出,此处并未体现序列的特征,例如图像分类场景。
one to many 结构:给一个输入得到一系列输出,这种结构可用于生产图片描述的场景。
many to one 结构: 给一系列输入得到一个输出,这种结构可用于文本情感分析,对一些列的文本输入进行分类,看是消极还是积 极情感。
many to many 结构: 给一些列输入得到一系列输出,这种结构可用于翻译或聊天对话场景,对输入的文本转换成另外一些列文本。
同步 many to many 结构: 它是经典的rnn结构,前一输入的状态会带到下一个状态中,而且每个输入都会对应一个输出,我们最熟悉的就是用于字符预测了,同样也可以用于视频分类,对视频的帧打标签。

2.seq2seq 简介

     seq2seq是一个重要的RNN变种,属于many to many。同时这种结构又叫Encoder-Decoder模型。原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。

    为此,我们先用Encoder 将输入编码映射到语义空间(下图左侧部分),得到一个个固定维数的向量(下图C),这个向量就表示输入的语义。然后我们使用Decoder进行解码,便获得所需的输出。

  它的特点很明显,就是不限制输入输出,故有很广泛的应用。如机器翻译,智能对话等。

 

 

3. seq2seq预测股票

我们利用seq2seq对股票收盘价进行了预测,关于代码的详细说明,参见注释,需要数据的同学可以加我qq,请备注csdn_seq2seq。

# -*- coding: utf-8 -*-
"""
seq2seq  stock
"""
        
import tensorflow as tf 
import numpy as np
import matplotlib.pyplot as plt  
import pandas as pd



'''
1.样本数据产生
'''
#pandas 链式赋值警告:a=b=c=1,凡事出现链式赋值的情况,
#pandas都是不能够确定到底返回的是一个引用还是一个拷贝。 所以遇到这种情况就干脆报warning
pd.options.mode.chained_assignment = None  # default='warn'
def loadstock(window_size):
    names = ['date', #日期
         'code', #股票代码
         'name', #名字
         'Close', # 收盘价
         'top_price', #最高价
         'low_price', #最低价
         'opening_price', #开盘价
         'bef_price',
         'floor_price',
         'floor',
         'exchange',
         'Volume',
         'amount',
         '总市值',
         '流通市值']
    data 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值