python如何仿写文章_tensorflow - RNN学习文章的风格去仿写

1 . 能干什么

在知乎,博客上面会看到有人分享自己的一些有意思的项目,比如下面这些,用rnn学习一个诗歌,散文,党章,小说什么的。然后,在自己生成一些东西。比如,下面的这两个例子。作为一个初学者,自己也想搭一个模型,然后试着玩一玩。

2128263b3014

image.png

2128263b3014

image.png

关于RNN的模型结构的基本原理,公式推导什么的,就先不在这里展开了。下面写得是,如何用tensorflow去实现这个模型。

2. 使用tensorflow 搭建这个RNN的模型去实现

读文件,将文件里面的句子分割成词,然后变成一个list。

## 预处理数据

def read_file():

# Text file containing words for training

training_file = 'belling_the_cat.txt'

content=[]

with open(training_file,'r') as f:

for line in f.readlines():

# line 表示读到数据的每一行,linelist是按照空格切分成一个list

linelist=line.strip().split()

for i in linelist:

content.append(i.strip())

content=np.array(content)

content=np.reshape(content,[-1,]) #shape (204,1)

return content

建立字典,建立字典的目的是实现将词转换成词向量

字典的目的是实现word-->向量,这个没有使用word2vec的算法。使用本书文本数据的词建立的向量。简化的过程,如下:

#文本数据

hello ml hello dl

#去重以后的词汇

hello ml dl

#建立字典

{'hello':0 , 'ml':1 , 'dl':2 }

#反向字典

{0:'hello' , 1:'ml' , 2: 'dl'}

代码如下:

def mybuild_dataset(words):

# words -- > ['hello','hello','world','python','tensorflow','rnn']

count = collections.Counter(words)

# Counter({'hello': 2, 'python': 1, 'rnn': 1, 'tensorflow': 1, 'world': 1})

dictionary=dict()

for key in count:

dictionary[key]=len(dictionary)

#dictionary -- > {'hello': 0, 'python': 3, 'rnn': 1, 'tensorflow': 2, 'world': 4}

reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))

#reverse_dictionary -- > {0: 'hello', 1: 'rnn', 2: 'tensorflow', 3: 'python', 4: 'world'}

return dictionary, reverse_dictionary #len(dictionary) --> 112

建立RNN模型训练

理解一个模型,我觉得一个比较好的方式是先搞明白它训练的输入和输出。在这个模型里面,处理训练数据的输入和输出,如下所示:

#训练数据

the mice had a xxxxx

# 训练的思路是,将前三个数据作为训练的输入

[[the],[mice],[had]] --> 转化为词向量

#将第四个词汇作为输出

['a']

#然后将输出的词汇转换成onehot的形式

[ 0,0,0,0 ...0,1,0,0 ... 0,0,0 ] #长度是词向量字典的长度 , 置1的地方是词向量字典里面‘a’对应的输出设置为1

具体实现的代码,如下:

3.1 RNN模型的训练数据的输入

n_input = 3

offset = 是一个随机的偏移,这个是程序设计上面的一个trick,不影响理解这一段代码

# 输入x ,将前三个词汇转换成词向量

# symbols_in_keys 是一个二维的list --> [[34], [92], [85]]

symbols_in_keys = [[dictionary[ str(training_data[i])]] for i in range(offset, offset+n_input) ]

# reshape 把他们转换成 (1, 3, 1)

symbols_in_keys = np.reshape(np.array(symbols_in_keys), [-1, n_input, 1])

3.2 RNN模型的训练数据的输出

# 这一段代码搞定是 y_true ,把第四个词转换成词向量 onehot的类型

symbols_out_onehot = np.zeros([vocab_size], dtype=float)

# str(training_data[offset+n_input]) -> 'mice'

symbols_out_onehot[dictionary[str(training_data[offset+n_input])]] = 1.0

symbols_out_onehot = np.reshape(symbols_out_onehot,[1,-1])

3.3 RNN模型的训练

def RNN(x, weights, biases):

batch_size=1

x = tf.reshape(x, [batch_size,n_input,1]) # (1,3,1) 相当于batch =1

# rnn

cell = tf.contrib.rnn.BasicLSTMCell(n_hidden)

init_state = cell.zero_state(batch_size, dtype=tf.float32)

# final_state 的维度是 batch * n_hidden --> 1 * 512

# outputs 的维度是 batch * n_input(time_step) * n_hidden --> 1 * 3 * 512

outputs, final_state = tf.nn.dynamic_rnn(cell, x, initial_state=init_state, time_major=False)

#print ("before unstack , output shape : ",outputs.shape) # output shape : (1,3,512) (batch,time_step,cell_n_hidden)

#unstack 更改维度

outputs = tf.unstack(tf.transpose(outputs, [1,0,2]))

#这个时候 outputs 变成了list

#print ("output shape[-1] 2: ",outputs[-1].shape) # output shape : (3,1,512), outputs[-1] shape (1,512)

results = tf.matmul(outputs[-1], weights['out']) + biases['out']

#(1,112) 这个的表示意义是一个(1,112)的onehot,112表示字典里面总共有112个词汇

return results #(1, 112) 这个表示的是一个onehot

训练的数据使用了伊索寓言的数据,但是数据的量很少,迭代的次数也很少。可以更换成其他的数据,然后增大迭代的次数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32678.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html仿写百度,vue 简单仿写百度搜索

vue .grey{ background: #CCC; height: 25px; } ul,li{ margin: 0; padding: 0; list-style-type:none; margin-left: 65px; width: 306px; } .dialog{ margin-left: 10px; margin-top: 30px; width: 300px; height: 25px; } .note{ margin-left: 130px; } window.οnlοadfunc…

html搜狐热搜列表仿写,GRE高分范文不能看过就算 学会仿写才能带来真正提高

可以说所有的写作都是从模仿开始。GRE作文同样不例外。通过参考他人的好文章,学习别人的写法,最后写出自己的文章是非常实用的作文学习方式。不过,模仿也需要讲究方法,单纯模仿并不会让大家有太多的收获。掌握方法才能有效提升自身…

PHP仿写网站,手机网站仿写0910

最近有点儿忙,这个作业交的有点儿晚了,但这个作业是看了老师讲解后一口气写出来的代码,不像以前的作业要反复的看老师的课件才完成的。通过这一段前端知识的学习我最大的收获就是学会用开发者工具去看一个网站的代码了,可以看懂大多数的网页的静态代码了,会逐步的分析一个…

绕过接口参数签名验证

在一些关键业务接口,系统通常会对请求参数进行签名验证,一旦篡改参数服务端就会提示签名校验失败。在黑盒渗透过程中,如果没办法绕过签名校验,那么就无法进一步深入。 微信小程序的前端代码很容易被反编译,一旦签名加密算法和密钥暴漏,找到参数的排序规则,那么就可以篡改…

在Mac电脑中轻松打开终端程序的快捷方法

命令行窗口实际就是我们常用的终端程序,命令行窗口在高级用户上,是经常用到的,但在Mac电脑中打开终端程序是比较麻烦的,下面分享几个快捷方法可以轻松打开终端程序。 方法一、 1、在Mac键盘上按住commandspace, 2、在…

【mac】关于终端上使用的快捷键

【mac】关于终端上使用的快捷键 清理行:您可以使用Ctrl U清理到开头。清理线路:Ctrl E Ctrl U擦拭终端中的当前线路清理线路:Ctrl A Ctrl K擦拭终端中的当前线路取消当前的命令行/行:Ctrl C。调用已删除的命令:Ctrl Y&…

mac之把打开终端设置快捷键为Ctrl+Alt+T

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程 1、在Automator.app中创建一个AppleScript Finder->应用程序->Automator打开Automator.app,打开Automator后…

【苹果推群发iMessage推】软件安装它起首将消息发送到Apple Push服务器,而后Apple Push服务器将消息发送到装配了应用程序的手机

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

ios13快捷指令怎么设置

在ios13系统中新增了很多值得一提的功能,可以帮助更加简单化的使用iphone手机,而在手机上也可以实现喊一句就能帮你进入该功能,那么ios13快捷指令怎么设置呢?下面就为大家带来ios13快捷指令设置方法,想知道的一起来了解…

IOS中通过快捷捷径打开场所码或者健康码

说明 本文标题其实应该叫“使用快捷捷径打开任意微信小程序页面”,因为本质上这篇文章就是说明如何在获取微信小程序任意界面的页面路径,以及通过Universal link在微信中打开对应页面的方法(本文使用“跨时空”APP来达到此目的)。…

小度送音箱,这是只属于开发者的福利

人工智能,将带给人们一个新的场景和蓝海市场 2019年的第一天,李彦宏以人工智能领域嘉宾的身份做客央视元旦特别节目《放歌新时代》,与主持人康辉一起展开了一场关于人工智能的对话:对话中李彦宏提到,2019年是人工智能全…

7个月后再测「小度在家」,已然超出音箱属性的未来新物种

作者|震霆 出品|遇见人工智能 公众号|GOwithAI 双十一的节奏你感受到了吗? 虽然离正日子还有6天,就连天猫和京东都还没到高潮,百度却抢先截胡,抛出了个大动作。 有这么一款当红明星AI产…

使用小度音箱+Blinker控制ESP01S Relay继电器模块

一. 使用ESP01S模块,PIN脚定义如下: 管脚功能如下: ESP01S模块原理图: ESP01S模块比ESP01模块做了以下优化: LED灯的管脚发生变化,由ESP01的TXD0变成ESP01s的GPIO2引脚;ESP01s模块的IO0、RST、…

小度智能音箱2红外版测评和拆机

小度智能音箱 2 红外版测评和拆机 买的小度智能音箱今天到货了,哈哈。这个版本支持红外,可以控制家里老家电。之前买过的小爱mini,天猫精灵,白色小度音箱1代,现在基本都在吃灰了,卖二手音箱啦~…

用小爱,小度语音控制家里的灯,无网络时,不影响物理开关

贝壳物联和小度,小爱的完美结合 亮点材料接线注册贝壳物联ArduinoIDE 安装程序编写烧录巴法云微信推送巴法云控制设置微信小程序控制设备小度音箱,小爱绑定和语音控制关于内网穿透和程序的在线更新 亮点 0.支持开关状态推送到微信 1.成本不超过20块&…

小度、天猫精灵、华为哪款智能音箱值得推荐?

随着智能家居的势头比较火热,各大智能厂商纷纷开启抓住了智能音箱市场的第一波红利,迅速入场布局分一杯羹。那么今天我们就来聊一聊,市场上有哪些主流的智能音箱品牌? 目前,大部分智能音箱在语音交互和内容播放上都差…

小度计算机模式,小度怎么连接电脑_小度智能音箱连接电脑的详细操作步骤

如果讲智能音箱哪家卖得好,小度肯定是排在前一二的,而大家不知道的是小度不仅可以连接手机,还可以连接电脑,那么小度智能音箱怎么与电脑配对和连接呢,为了给大家一些参考,下面智能手机网小编就带来了教小度…

小度智能音箱拆解评测

小度智能音箱拆解评测 前言拆解相关链接 前言 近日小编偶然收到了一个二手的“小度智能音箱”,作为一款智能音箱,它的结构设计存在哪些特别之处,引起了小编的好奇心,下面对它做一个拆解,深入了解一下它的内部结构&…

智能音箱里小度、小爱、天猫精灵哪个更加好?(上)

相信大家都听说过智能音箱吧,走在大街上也能听到一些店铺在用智能音箱放歌。 目前市场上比较有名的智能音箱有小度、小爱、天猫精灵,还有国外的像亚马逊的echo、苹果的siri等等。 首先我们来了解一下什么是智能音箱。 智能音箱是音箱升级后的产物&…