霍格沃兹见!用RNN和TensorFlow创作自己的《哈利波特》小说


全文共5945字,预计学习时长15分钟

图源:unsplash

还在等待霍格沃茨的录取通知书?想在大礼堂里享用晚宴?探索霍格沃茨的秘密通道?在奥利凡德魔杖店买第一根魔杖?叹气,你不是一个人。这么久了,我还是沉迷于哈利波特的魔法世界。

 

最近我开始学习神经网络,着迷于深度学习的强大创造力。灵光乍现,我为什么不把它们融合在一起呢?因此,我使用TensorFlow执行了一个简单的文本生成模型来创作我自己的《哈利·波特》短篇小说。

 

本文将介绍了我为实现它而编写的完整代码。各位巫师可以在这里直接找到github代码并自己运行它:https://github.com/amisha-jodhani/text-generator-harry-potter

 

当你闲来无事时,它可以向无聊施一个驱逐咒。

 

背景

RNN是什么?

 

循环神经网络(RNN)与其他神经网络不同,它是有记忆的神经网络,可以存储它处理过的所有层的信息,并在记忆的基础上计算下一层。

 

GRU vs LSTM

 

二者在文本生成上都表现出色,GRU(门控循环单元)是比较新的概念,实际上并没有一种方法可以确定二者哪个更好。优化超参数比选择一个好的架构更能提高模型性能。

 

如果数据量不成问题,那么则是LSTM(长短期记忆网络)性能更优。如果数据量较少,那么GRU参数更少,因此训练更快,并能很好地泛化。

 

为什么是基于字符的?

 

在处理这样的大型数据集时,一个语料库中不重复单词的总量远远高于唯一字符的数量。一个大型数据集有许多不重复的单词,当为如此大的矩阵分配独热编码时,很可能会遇到内存问题。光是标签本身就可以占据Tb级的内存。

 

用来预测单词的原则也可以应用在这里,但是现在要处理的词汇量要小得多。

 

代码

 

图源:unsplash

首先导入所需的库

 

import tensorflow as tfimport numpy as npimport osimport time

现在,读取数据

 

可以从 一个Kaggle数据集找到并下载所有《哈利波特》的文稿(https://www.kaggle.com/alex44jzy/harrypotter)。我将这七本书合并到一个名为“harrypotter.txt”的文本文件中,你也可以挑选你喜欢的任何一本来训练模型。

files= [‘1SorcerersStone.txt’, ‘2ChamberofSecrets.txt’, ‘3ThePrisonerOfAzkaban.txt’,‘4TheGobletOfFire.txt’, ‘5OrderofthePhoenix.txt’, ‘6TheHalfBloodPrince.txt’,‘7DeathlyHollows.txt’]with open(‘harrypotter.txt’, ‘w’) as outfile:for file in files:  with open(file) as infile:    outfile.write(infile.read())text = open(‘harrypotter.txt’).read()

查看数据

 

print(text[:300])

处理数据

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值