RNN预测

这篇博客介绍了使用RNN进行文本预测的实践过程,包括RNN的基本原理、训练情况和基本思路框架。作者通过编码、分批处理数据、建立LSTM模型并训练,最后展示了不太满意的结果,表达了对提升预测效果的期望。
摘要由CSDN通过智能技术生成

RNN循环神经网络

实现文本预测

RNN原理:

A -> Model -> B -> Model -> C -> …

所形成的句子[A, B, C, …]

先看结果:
预测 -> "不分开"
不分开 还知道多难 你心烦叫你也才有些天 别 爱着还是 说 外场米渐我知道 自己会太多走不走 一颗三废都不要我手 这样也和义 自己的受伤 让我刮 小用往 只要女生活能记不多 那果有在想要你们过去 我不能怕做 你否定不你 脑诉为要承透 融必我遇见你还是微笑 自然却没要让你看着我 想知到你去一遍想办得模样 我不开 小情掉在我情球 断于的弦 再怎么接 又上不见 你很快化没是 我不能听多久 如果说你的一样伴

训练情况:
在这里插入图片描述

结果是挺不满意的, 毕竟理解不是很深

基本思路框架

和以前线性模型比较相似

  1. 加载数据 – 处理数据
  2. 设置独热编码
  3. 分批数据
  4. 建立模型
  5. 训练模型
  6. 预测

正常导包

import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F

加载数据, 自己找篇文章啥的都可以
提前把"\n"和"\t"这两个字符转为空格
设置可以由文字转数字, 数字转文字的字典
encoded 就是我们的训练数据, 也就是一列表的的数字, 方便onehot矩阵的实现

with open("../input/jaychou_lyrics4703/jaychou_lyrics.txt", "r", encoding="utf-8") as f:
    text = f.readlines()
text = "".join(text).replace("\n", " ").replace("\t", " ")[:30000]

char = list(set(text))
char_to_int = {
   c: i for i, c in enumerate(char)}
int_to_char = {
   i: c for i, c in enumerate(char)}

vocab_size = len(char_to_int)

encoded = [char_to_int[i] for i in text]

onehot 将输入的文本(刚刚已经转成数字了)实现成矩阵, 以便训练
onehot会输出一个二维矩阵
例: {a: 0, b: 1, c: 2}
input = “bac”
return [[0, 1, 0],
[1, 0, 0],
[0, 0, 1]]

def one_hot(text, n_class):
    """
        text: 序列串, tensor
        n_class: chars(dict) 长度
    """
    res = torch.zeros(text.shape
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值