项目来源:B站上的up主

jucheng《基于pytorch_LSTM古诗生成》 https://www.bilibili.com/video/BV1G54y177iw真的是一个宝藏up主,讲解很详细,而且声音跟我的很像?有那么一瞬间我感觉我听见了回声,也许是错觉,也是立即点了一个关注。代码、数据可以去他的网站上领取:http://www.zifuture.com:8090/archives/jiyu-lstm-gushi-cangtoushi)

下面是学习笔记,但是说实话up主在视频中手写的过程才是最大的精华。本文手写图片都来自视频的截图!!

处理流程:

  1. 字向量训练(word2vec)
  2. 封装数据
  3. 组合模型(LSTM+Linear、GRU+Linear)
  4. 训练
  5. 生成与测试

字向量训练(word2vec)

调用gensim
字向量简介:
举头望明月,低头思故乡。
对应词库:举/头/望/明/月/,/低/ 思/故/乡/。/
第二个没了,因为词库需要“唯一”、“不重复”。

词库大小:word_size:11(词库中字的数量)
词向量维度:embedding_num:128

index2word: 比如0对应”举“的1128这个向量,1对应着”头“这个1128向量
word2index:反之亦然。

最终得到三个矩阵:

  1. 11*128的那个词向量矩阵
  2. word2index字找索引
  3. index2word索引找字

封装数据(将数据处理成需要的样子)

原始数据:
古诗一行一行的(共3000首左右);
batch_size = 5:每次放5首古诗;
word_size = 3542 词库大小(up主的训练集一共有3542个不同的字);
embedding_num = 128 一般在100-300之间;

x = ‘一首诗,结尾的字省去’
y = ‘x对应下一个字’

将x每个字变成索引,再转化为对应数字(word2index),y同理;
形成向量:将句子表示出来31个字*128每个字的

x 5首古诗(5行古诗)31个字128个向量(与字一一对应)
y 5首诗 5 * 31对应字库索引(y不用构建向量)

组合模型(LSTM+Linear、GRU+Linear)

使用已有pytorch框架


  • LSTM前的步骤完成后
  • 将数据集输入到LSTM中,设置其hidden_num(隐层数) = 64 隐层大小结果为:生成531hudden_num;实际上将X变短了或者拉长了
  • 再进行flatten(压平)变成二维的:155 * hidden_num (将五首诗看作一首长诗,一共315个字)
    再进行Linear(映射)得到64
    3542(进行矩阵相乘得到pre)(3542是字库大小,目标是选出3542个字中,下一个可能性最大的那个,即为p)
  • 最后p(155* 1)与 y(155* 1)进行对比(交叉损失函数进行比较)

训练

生成与测试

  • 输入11128 (一个字)
  • 经过LSTM继续变成隐层维度1164,经过flatten164,经过linear层13542,即在3542个字中选出可能性最大的那个索引,最后index2word,得到对应字。
  • 对应字重新作为输入,再进行循环。

项目展示(有时间补坑,粗略看了up主的代码,

最后代码没来得及写,但是对函数做了个分析:
Word2Vec的参数详细研究:

Word2Vec(=sentences=None=, # 在本项目中是一首诗(经过"加空格"处理)
corpus_file=None, # 语料库文件:str,可选语料库文件的路径:class:~gensim.models.word2vec.LineSequence格式。您可以使用此参数而不是“句子”来提高性能。只有一个“句子”或需要传递corpus_file参数(或者不传递任何参数,在这种情况下,模型保持未初始化状态)。
vector_size=100, # 向量大小:int,可选词向量的维数。
alpha=0.025, # alpha:float,可选初始学习率。
window=5, # int,可选句子中当前单词和预测单词之间的最大距离。
min_count=5, # 最小计数:整数,可选忽略总频率低于此值的所有单词。因为古诗很稀疏,所以一定要设置为1!!
max_vocab_size=None, # int,可选在词汇构建过程中限制RAM;如果有更独特的比这更多的词,然后删掉不常出现的词。每1000万字类型需要大约1GB的RAM。设置为“无”表示无限制。
sample=0.001, # 示例:float,可选配置随机下采样的高频字的阈值,有效范围为(0,1e-5)。
seed=1, # int,可选随机数生成器的种子。每个单词的初始向量都以哈希值作为种子
workers=3, # int,可选使用这些多个辅助线程来训练模型(使用多核机器进行更快的训练)。
min_alpha=0.0001, # float,可选随着培训的进行,学习率将线性下降至“最低阿尔法”。
sg=0, # sg:{0,1},可选训练算法:1为跳转图;否则CBOW。
hs=0, # hs:{0,1},可选如果为1,则分层softmax将用于模型训练。
negative=5, # int,可选如果>0,将使用负采样,负的int指定有多少个“噪声字”应绘制(通常在5-20之间)。如果设置为0,则不使用负采样。
ns_exponent=0.75, # float,可选用于塑造负采样分布的指数。完全按比例的1.0个样本的值
对于频率,0.0对所有单词进行同等采样,而负值对低频单词进行更多采样而不是高频词。常用的默认值0.75是由最初的Word2Vec论文选择的。最近,在https://arxiv.org/abs/1804.04212Caselles Dupré、Lesaint和Royo Letelier建议对于推荐应用程序,其他值的性能可能更好。
cbow_mean=1, # {0,1},可选如果为0,则使用上下文单词向量之和。如果1,则使用平均值,仅在使用cbow时适用。
hashfxn=, # function ,可选散列函数用于随机初始化权重,以提高训练的再现性。
epochs=5, # int,可选语料库上的迭代次数(历次)。(原名为“国际热核实验堆”)
null_word=0, # 未找到???
trim_rule=None, # function,可选,词汇修剪规则,指定是否应保留词汇表中的某些单词、是否应修剪掉或使用默认值(如果单词计数<最小计数,则放弃)。可以为None(将使用最小计数,请参阅:func:~gensim.utils.keep_vocab_item),或接受参数(单词、计数、最小计数)的可调用项并返回:attr:gensim.utils.RULE_DISCARD、:attr:gensim.utils.RULE_KEEP或:attr:gensim.utils.RULE_DEFAULT。如果给定了该规则,则该规则仅用于在构建过程中修剪词汇表,而不是作为模型的一部分存储。
sorted_vocab=1, # {0,1},可选如果为1,请在指定单词索引之前按降序对词汇表进行排序。请参阅:meth:~gensim.models.keyedvectors.keyedvectors.sort by_descending_frequency()
batch_words=10000, # 批处理字:int,可选传递给工作线程的示例批的目标大小(大写)(和
因此,cython例程。)(如果单个文本长度超过10000个单词,但标准cython代码将截断到该最大值。)
compute_loss=False,# 计算损耗:布尔,可选如果为True,则计算并存储可以使用:方法:~gensim.models.word2vec.word2vec.get\u latest\u training\u loss
callbacks=(), # 回调:iterable of:class:~gensim.models.callbacks.CallbackAny2Vec,可选,在培训期间特定阶段执行的回调顺序。收缩窗口:布尔,可选
comment=None, # ??未找到
max_final_vocab=None, # int,通过自动选取匹配的最小值计数,将vocab限制为目标vocab大小。如果指定最小计数大于计算的最小计数,将使用指定的最小计数。如果不需要,则设置为“无”。
shrink_windows=True # 收缩窗口:布尔,可选在4.1中新增。实验的如果为True,则从[1,window]中均匀采样有效窗口大小对于训练期间的每个目标单词,匹配原始word2vec算法的上下文词按距离的近似权重。否则,有效的窗口大小始终固定为两边的“窗口”字。
)

sentences就是给的这个数据集(当然是很多行就不截图了):
又留了个坑呢,哎,时间太珍贵了,等有空了一定补坑!!

05古诗生成项目(pytorch)(观看b站视频的笔记,代码即将实现)相关推荐

  1. 观看 B站视频-Mysql-随堂笔记

    观看 B站 视频:https://www.bilibili.com/video/BV1fx411X7BD?p=1 SQL\DB\DBMS分别是什么?关系? DB:database,数据库,数据库实际上 ...

  2. 观看 B站视频-Jmeter实操笔记

    B站视频: 花一万多找的 JMeter接口测试+性能测试高阶自动化测试零基础入门全教学_哔哩哔哩_bilibili整理好了相关视频的随堂笔记.最新面试教学大厂面试真题和VIP学员的学习指导路线,放到B ...

  3. 郑莉老师c++第五版+b站视频 学习笔记

    本文是系统学习 郑莉c++第五版+b站视频的学习笔记. 郑莉老师b站内容分为 导学 文章目录 第0章:学习怎么学习--论道开篇+怎样学c++ 论道开篇 怎样学c++ 第1章绪论 导学笔记(学堂在线+b ...

  4. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)

    1.主界面分析 1.练习:创建主界面1 到IDEA中创建一个宽603像素,高680像素的游戏主界面 到IDEA中创建一个宽488像素,高430像素的登录界面 到IDEA中创建一个宽488像素,高500 ...

  5. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day10-字符串

    1.API和API帮助文档 API:应用程序接口. 简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可. JavaAPI:指的就是JDK中提供的各种功能的Java类.这些类将底层 ...

  6. 【PyTorch】PyTorch深度学习实践|视频学习笔记|P6-P9

    PyTorch深度学习实践 逻辑斯蒂回归及实现 背景与概念 基于分类问题中属性是类别性的,所以不能采取基于序数的线性回归模型,而提出了新的分类模型--逻辑斯蒂回归模型,输出每个样本在各个预测值上的概率 ...

  7. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day7-综合练习

    1.卖飞机票 需求:机票价格按照淡季旺季.头等舱和经济舱收费.输入机票原价.月份和头等舱或者经济舱. 按照如下规则进行计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折:淡季(11月到来年4月 ...

  8. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day12-学生管理系统

    基础版本: 需求:采取控制台的方式去书写学生管理系统. 分析: (1).初始菜单: (2).学生类: 属性:id.姓名.年龄.家庭住址. (3).添加功能: 键盘录入每一个学生信息并添加,满足以下要求 ...

  9. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day14-面向对象进阶02

    1.权限修饰符和代码块 1.1 权限修饰符 权限修饰符:是用来控制一个成员能够被访问的范围的. 可以修饰:成员变量.方法.构造方法.内部类. 巧计举例: private--------私有的----- ...

最新文章

  1. dynamodb容器使用_使用DynamoDBMapper扫描DynamoDB项目
  2. [读书笔记] - 《深度探索C++对象模型》第1章 关于对象
  3. CentOS7安装xrdp(windows远程桌面连接CentOS)
  4. jupyter生成数据集
  5. java贪吃蛇客户端服务器_java Socket套接字TCP编程开发服务端和客户端之间的通信 - 贪吃蛇学院-专业IT技术平台...
  6. 第四期coding_group笔记_用CRF实现分词-词性标注
  7. Objective-C中的位运算符用法
  8. LINUX没有SVN,怎么知道哪些文件修改了
  9. Python 图片压缩
  10. 借助取色工具ColorPix对Pycharm编辑器设定自己喜欢的代码颜色_20161202
  11. windows服务获取登录用户名
  12. 华为软件测试笔试真题之变态逻辑推理题【二】华为爆火面试题
  13. 登录英雄联盟显示正在连接服务器,windows10系统登录英雄联盟出现连接不上服务器如何解决...
  14. Metasploit---端口扫描模块
  15. 武科大计算机科学与技术教务处,武科大教-武汉科技大学教务处.PDF
  16. 华三(H3C) H3C5820V2 交换机IOS升级
  17. win10应用商店不见了
  18. oracle 闩锁(latch)概述
  19. 什么是Hadoop - HDFS - MapReduce - YARN - HA
  20. java 三个字母组合_每天AC系列(三):电话号码的字母组合

热门文章

  1. 【3dsmax2016】安装图文教程、破解注册以及切换语言方法
  2. 安科瑞预付费系统的实际设计与应用
  3. 切图工具:关于工具的几个概念
  4. 【C基础】空字符'\0'与字符串
  5. JVM内存模型和性能调优:系列文章 - 导读
  6. 垃圾分类 小程序完整项目!
  7. 用计算机制作板报教案,浅析“用Word制作电子板报”的教学设计
  8. 全球及中国自然循环蒸发器行业研究及十四五规划分析报告
  9. Android反编译工具jadx详细使用方法
  10. 2012移动开发者大会北京站。前100名免票哈!!