[硬货]|如何利用深度学习写诗歌(使用Python进行文本生成)

起点中文网小说文本分类项目【简易上手的nlp实战项目】 小说文本分类任务 代码链接 https://github.com/a1097304791/fiction-classification 数据集 数据集有从起点中文网上爬取的13个分类,每个分类20本,每本10章,共260部小说,3600章。 所用算法 采用支持向量机(SVM)算法,考虑使用一对多法,训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类别的样本就构造出了k个SVM。分类时将未知样本分类为具有最大分类函数值的那类。 1. 加载数据集 从文件夹读取数据,按照种类名->对应 阅读详情
AI摘要

本文介绍如何使用Python和自然语言处理技术,通过机器学习模型生成莎士比亚风格的十四行诗。文中详细解释了文本生成的基本概念、所需步骤及如何构建和训练模型。

           翻译:李雪冬             

前  言


从短篇小说到写5万字的小说,机器不断涌现出前所未有的词汇。在web上有大量的例子可供开发人员使用机器学习来编写文本,呈现的效果有荒谬的也有令人叹为观止的。 
由于自然语言处理(NLP)领域的重大进步,机器能够自己理解上下文和编造故事。

文本生成的例子包括,机器编写了流行小说的整个章节,比如《权力的游戏》和《哈利波特》,取得了不同程度的成功。在本文中,我们将使用python和文本生成的概念来构建一个机器学习模型,可以用莎士比亚的风格来写十四行诗。让我们来看看它!

本文的主要内容

1.什么是文本生成? 
2.文本生成的不同步骤。 
3.入口的依赖 
4.加载数据 
5.创建字符/单词映射 
6.数据预处理 
7.模型创建 
8.生成文本 
9.尝试不同的模型 
10.更多的训练模型 
(1)一个更深层次的模型 
(2).一个更广泛的模型 
(3)一个超大的模型

1

什么是文本生成


现在,有大量的数据可以按顺序分类。它们以音频、视频、文本、时间序列、传感器数据等形式存在。针对这样特殊类别的数据,如果两个事件都发生在特定的时间内,A先于B和B先于A是完全不同的两个场景。然而,在传统的机器学习问题中,一个特定的数据点是否被记录在另一个数据点之前是不重要的。这种考虑使我们的序列预测问题有了新的解决方法。

文本是由一个挨着一个的字符组成的,实际中是很难处理的。这是因为在处理文本时,可以训练一个模型来使用之前发生的序列来做出非常准确的预测,但是之前的一个错误的预测有可能使整个句子变得毫无意义。这就是让文本生成器变得棘手的原因! 
为了更好地理解代码,请浏览这两篇文章。LSTM背后的理论(链接:https://www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm/)

2

文本生成的步骤


文本生成通常包括以下步骤:

  1. 导入依赖

  2. 加载数据

  3. 创建映射

  4. 数据预处理

  5. 模型构建

  6. 生成文本

让我们详细地看一下每一个。

3

导入依赖


import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import LSTM
from keras.utils import np_utils
4

加载数据

text=(open("/Users/pranjal/Desktop/text_generator/sonnets.txt").read())
text=text.lower()

这里,我们正在加载所有莎士比亚十四行诗的集合,这些十四行诗可以从这里(链接:http://www.gutenberg.org/cache/epub/1041/pg1041.txt)下载。我清理了这个文件以删除开始和结束的学分,并且可以从我的git存储库下载。 文本文件被打开并保存在text中。然后将该内容转换为小写,以减少可能单词的数量(稍后将对此进行详细介绍)。

5

创建映射


映射是在文本中为字符/单词分配任意数字的步骤。这样,所有的惟一字符/单词都映射到一个数字。这一点很重要,因为机器比文本更能理解数字,这使得训练过程更加容易。

characters = sorted(list(set(text)))
n_to_char = {n:char for n, char in enumerate(characters)}
char_to_n = {char:n for n, char in enumerate(characters)}

我已经创建了一个字典,其中给文本中每个独特的字符分配一个数字。所有独特的字符首先存储在字符中,然后被枚举。

这里还必须注意,我使用了字符级别的映射,而不是单词映射。然而,与基于字符的模型相比,基于单词的模型与其他模型相比具有更高的准确性。这是因为基于字符需要一个更大的网络来学习长期依赖关系,因为它不仅要记住单词的顺序,而且还要学会预测一个语法正确的单词。但是,在基于单词的模型中,后者已经被处理好了。


6

数据预处理


在构建LSTM模型时,这是最棘手的部分。将手头的数据转换成可供模型训练的格式是一项困难的任务。 我会把这个过程分解成小的部分,让你更容易理解。

X = []
Y = []
length = len(text)
seq_length = 100
for i in range(0, length-seq_length, 1):
sequence = text[i:i + seq_length]
label =text[i + seq_length]
X.append([char_to_n[char] for char in sequence])
Y.append(char_to_n[label])

这里,X是我们的训练序列,Y是我们的目标数组。seq_length是我们在预测某个特定字符之前要考虑的字符序列的长度。for循环用于遍历文本的整个长度,并创建这样的序列(存储在X中)和它们的真实值(存储在Y中),为了更好地弄清楚“真实值”的概念。让我们以一个例子来理解这一点: 

对于4的序列长度和文本“hello india”,我们将有X和Y表示如下: 

现在,LSTMs接受输入的形式是(number_of_sequence, length_of_sequence, number_of_features),这不是数组的当前格式。另外,我们需要将数组Y转换成一个one-hot编码格式。

X_modified = np.reshape(X, (len(X), seq_length, 1))
X_modified = X_modified / float(len(characters))
Y_modified = np_utils.to_categorical(Y)


我们首先将数组X重构为所需的维度。然后,我们将X_modified的值进行缩放,这样我们的神经网络就可以更快地训练,并且更少的机会被困在局部最小值中。此外,我们的Y_modified是一个热编码,以删除在映射字符过程中可能引入的任何顺序关系。也就是说,与“z”相比,“a”可能会被分配一个较低的数字,但这并不表示两者之间有任何关系。 
最后的数组将是: 


7

建立模型


model = Sequential()
model.add(LSTM(400, input_shape=(X_modified.shape[1],            X_modified.shape[2]), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(400))
model.add(Dropout(0.2))
model.add(Dense(Y_modified.shape[1], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
我们正在构建一个具有两个LSTM层的序列模型,每个层有400个单元。第一层需要用输入形状输入。为了使下一个LSTM层能够处理相同的序列,我们输入return_sequence参数为真。 此外,设置参数为0.2的dropout层,以检查是否过拟合。最后一层输出one-hot编码的矢量,它提供字符输出。8

文本生成


string_mapped = X[99]
for i in range(seq_length):
x = np.reshape(string_mapped,(1,len(string_mapped), 1))
x = x / float(len(characters))
pred_index = np.argmax(model.predict(x, verbose=0))
seq = [n_to_char[value] for value in string_mapped]
string_mapped.append(pred_index)
string_mapped = string_mapped[1:len(string_mapped)]


我们从X数组中的随机一行开始,这是一个100个字符的数组。在此之后,我们的目标是预测x后面的另外100个字符,输入将如同前面一样被重新塑造和缩放,预测下一个具有最大概率的字符。seq用于存储到现在为止预测行为用到的字符串的解码格式。接下来,新字符串被更新,这样第一个字符被删除,新的预测字符被包含进来。您可以在这里找到整个代码。这里提供了训练文件,注释和训练的模型权重供您参考。9

尝试不同模型

基线模型:

当训练为1个周期,批大小为100时,给出如下输出:

's the riper should by time decease,
his tender heir might bear his memory:
but thou, contracted toet she the the the the the the the the
thi the the the the the the the the the the the the the the the the the
thi the the the the the the the the the the the the the the the the the
thi the the the the the the the the the the the the the the the the the
thi the the the the the the the the the the the the the the the the the
thi the the the the the the the the th'

这个输出没有多大意义。它只是重复同样的预测,就好像它被困在一个循环中一样。这是因为与我们训练的微型模型相比,语言预测模型太复杂了。 
让我们试着训练同样的模型,但是将时间周期变长。

加强训练时间的模型:

这次我们训练我们的模型为100个周期,批大小设置为50。我们至少得到了一个非重复的字符序列,其中包含了相当数量的合理单词。此外,该模型还学会了生成一个类似14行诗的结构。

'The riper should by time decease,
his tender heir might bear his memory:
but thou, contracted to thine own besire,
that in the breath ther doomownd wron to ray,
dorh part nit backn oy steresc douh dxcel;
for that i have beauty lekeng norirness,
for all the foowing of a former sight,
which in the remame douh a foure to his,
that in the very bumees of toue mart detenese;
how ap i am nnw love, he past doth fiamee.
to diserace but in the orsths of are orider,
waie agliemt would have me '


但是,这个模型还不够好,不能产生高质量的内容。所以现在我们要做的是当一个深度学习模型没有产生好的结果时,每个人都会做的事情。建立一个更深层次的架构!

一个更深的模型:

一位机器学习的大牛曾经说过:如果模型做得不好,那就增加层数!我将用我的模型做同样的事情。让我们再添加一个LSTM层,里面有400个单元,然后是一个参数为0.2的dropout层,看看我们得到了什么。

"The riper should by time decease,
his tender heir might bear his memory:
but thou, contracted to the world's false sporoe,
with eyes so dond touls be thy domfornds,
which for memorion of the seasons new;
mike own self-love to shou art constant
how can i then be oy love doth give,
the rose looks fair, but fairer bomments age.
now with the seas that i have seen dychl
that mot to teed of you, if h ho bontent,
and all the ress of the heartai thee;
the world will was iis bound and farty "

结果开始变得有趣。语法实现了自我增强,保持了十四行诗的结构和标点的完整。然而,这仍然需要很大的改进。让我们尝试探索一个更广泛的网络,一个拥有更多单元的网络。

一个更广的模型:

在两个LSTM层中,我将单元的数量增加到700个。这个调整产生了以下的诗歌:

"The riper should by time decease,
his tender heir might bear his memory:
but thou, contracted to thine own bright eyes,
feed'st thy sigh aare so beuider poise,
oor maty dis surre that gairs mot me love thee;
when i braye the would and lays in the eesire.
than thmu disgrmed stand with my bootr still nsentente;
tell ia to thou art thou wilt woon'thy sook,
and touain then tor, give thy soue semping.
whose whod the better of your befaiss nu sante,
though i, suoll oas, and i lose bouh twa"

这个做法并没有令我满意,因为这些词已经失去了意义。但是,有趣的是,这个模型开始尝试建立一些韵脚。模型毕竟是在开始尝试更深层次理解诗歌!但是,对于训练出既有意义又优美的诗歌的目标,我们不能妥协,对吗? 
让我们把它放在一个超大的模型中。

一个超大的模型:

我将层数增加到3层,每层有700个单元,并训练了100个周期。产生的结果是一篇宏伟的诗篇。请看:

"The riper should by time decease,
his tender heir might bear his memory:
but thou, contracted to thine own bright eyes,
feed'st thy light's flame with self-substantial fuel,
my beept is she breat oe bath dasehr ill:
tirse do i pine and turfeit day by day,
or gluttoning on all, or all away.
Lxxvi
why is my verse so barren of new pride,
so far from variation or quick change?
why with the time do i not glance aside
to new-found methods, and to compounds strange?
why write i stil"

这篇诗歌不仅用词准确,而且也学会了押韵。我们本可以有一件更宏伟的艺术品,但是作为入门LSTM的一个开始,这就够了。这已经是比大多数人更好地表达了!

参考资料

欢迎交流与转载,公众号:机器学习算法全栈工程师 

本文翻译自pranjal seivastava的一篇文章 

(链接:https://www.analyticsvidhya.com/blog/2018/03/text-generation-using-python-nlp/)原作者保留版权





end






机器学习算法全栈工程师


                            一个用心的公众号

长按,识别,加关注

进群,学习,得帮助

你的关注,我们的热度,

我们一定给你学习最大的帮助


Tensorflow-3-使用RNN生成中文小说 这篇文章不涉及RNN的基本原理,只是从选择数据集开始,到最后生成文本,展示一个RNN使用实例的过程。对于深度学习的应用者,最应该关注的除了算法和模型,还应该关注如何预处理好自己的数据,合理降噪,以及如何在数据量不同的情况下选择合理的超参,来达到最理想的训练结果。... 阅读详情

相关推荐

LSTM做文本生成(基于word2vec)

数据:使用丘吉尔的人物传记作为我的学习语料 框架:Keras import os import numpy as np import nltk from keras.models import Sequential from keras.layers import Dense from keras.layers import Dropout from keras.layers import ...

weixin_41370083的博客 7348

使用Keras 构建基于 LSTM 模型的故事生成器

LSTM 网络工作示意图 什么是 LSTM 网络? LSTM (Long Short Term Memory, 长短期神经网络)是一种特殊的循环神经网络(RNN, Recurrent neural networks)。 LSTM 能够通过更新单元状态来学习参数间的长期依赖关系,目前在机器翻译、语言识别等领域有着广泛应用。 LSTM 的使用背景 当你读这篇文章的时候,你可以根据你对前面所读单词的理解来理解上下文。 你不会从一开始或者从中间部分阅读就能够直接理解文本意义,而是随着你阅读的深入,你的大脑才最终形.

deephub 7357

Web安全:备份文件泄露漏洞解析与防御实践

备份文件泄露是Web安全中常见的信息泄露漏洞,通常由开发过程中遗留的.bak、.swp等临时文件导致。这类文件可能包含源代码、数据库凭证等敏感信息,攻击者通过扫描常见备份文件扩展名即可获取。从技术原理看,这属于配置缺陷类漏洞,本质是开发环境与生产环境边界模糊。在工程实践中,建议使用版本控制系统替代手动备份,并通过Nginx规则禁止访问特定文件类型。对于CTF选手和安全工程师,掌握备份文件扫描技巧(如使用dirsearch工具)是基础技能。本文以典型CTF题目为例,详解如何通过分析index.php.bak获

weixin_34184561的博客 931

DL之LSTM:基于《wonderland爱丽丝梦游仙境记》小说数据集利用LSTM算法(层加深,基于keras)对单个character字符预测

DL之LSTM:基于《wonderland爱丽丝梦游仙境记》小说数据集利用LSTM算法(层加深,基于keras)对单个character字符预测 目录 基于《wonderland爱丽丝梦游仙境记》小说数据集利用LSTM算法(层加深,基于keras)对单个character字符预测 设计思路 输出结果 核心代码 基于《wonderland爱丽丝梦游仙境记》小说数据集利用LSTM算法(层加深,基于keras)对单个character字符预测 设计思路 数据集下...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3188

手把手实现AI诗歌生成(AI写诗)

本模型采用的是字符级别的诗歌生成(pytorch) 环境: python3.X pytorch GPU或CPU版本都行, 另外天有点冷,建议用GPU训练,电脑绝对比暖手宝好用 目录 项目文件结构: 数据已经打包: 1、数据集处理 2、构建模型与训练模型 基于概率语言模型的模型 网络结构 网络输入输出 损失函数 3、生成诗歌 4、配置文件 5、生成效果 6、结语 参考: 项目文件结构: data:存放预处理好的数据 model:存放训练好的模型 co

m0_55970575的博客 1万+

使用Python编写一个简单的文本生成器

在Python中,我们经常需要生成一些随机的、有趣的、或者是有规律的文本。通过使用random模块和字符串处理函数,我们可以生成随机的、有规律的、或者是按照特定需求的文本。Python提供了丰富的字符串处理函数和模块,可以帮助我们实现更多有趣的文本生成功能。首先,我们需要导入Python的内置模块random,它提供了一些生成随机数的函数。除了生成随机字符串,我们还可以生成一些有规律的文本。比如,我们可以生成一个由重复的单词组成的句子。生成一个由5个重复的单词"Hello"组成的句子,并将结果打印出来。

PixelEnigma的博客 688

基于LSTM + keras 的诗歌生成器

最近在github 上发现了一个好玩的项目,一个基于LSTM + keras 实现的诗歌生成器,地址是:https://github.com/youyuge34/Poems_generator_Keras. 我去看了一下代码,实现的原理其实很common,就是普通的基于LSTM 的序列模型。模型使用了43030首诗进行训练,最后生成的诗歌还是有模有样的(当然仅限于有模有样,自然是...

weixin_30596343的博客 1622

TI IWR6843AOP雷达+DCA1000EVM数据采集:官方手册里的坑,我帮你踩完了

本文详细解析了TI IWR6843AOP雷达与DCA1000EVM数据采集实战中的12个关键细节,包括硬件连接陷阱、mmWave Studio隐藏设置、数据采集参数优化等,帮助开发者避开官方手册未提及的常见问题,提升数据采集效率和系统稳定性。

weixin_28366475的博客 1102

基于Keras框架对抗神经网络DCGAN实践

本人作为IT从业者,学习对抗神经网络,以IT视角描述GANs,并使用开源代码资源学习GANs,与实际数据不足工作需求结合,基于Keras框架,通过调整DCGAN网络结构和参数,生成可以以假乱真的数据样本图片。并记录了中间过程中遇到的问题和参考资源,欢迎读者朋友反馈帮忙。

肖永威的专栏 3365

RK3568(buildroot)利用squashfs+overlay实现嵌入式系统高可靠存储方案

本文详细介绍了在RK3568嵌入式平台上,基于Buildroot系统,利用squashfs只读根文件系统与overlayfs可写层相结合的高可靠存储方案。该方案能有效防止设备意外断电导致的系统文件损坏,通过内核配置、启动脚本编写及镜像制作,实现系统核心的只读保护与用户数据的持久化分离,显著提升嵌入式设备的现场稳定性。

weixin_29189381的博客 546

用pyqtgraph 和pyqt5绘制股票K线图

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'QWidget_plot.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!...

qq_23114283的博客 5427

使用keras创建自己的图像标题生成器

【翻译自 : create-your-own-image-caption-generator-using-keras】 【说明:analyticsvidhya这里的文章个人很喜欢,所以闲暇时间里会做一点翻译和学习实践的工作,这里是相应工作的实践记录,希望能帮到有需要的人!】 总览 了解图像字幕生成器如何使用编码器-解码器工作 知道如何使用Keras创建自己的图像标题生成器 介绍 图像标题生成器是人工智能的热门研...

Together_CZ的博客 1303

从零构建安全通信:mbedtls与ECDSA在嵌入式系统中的实战指南

本文详细介绍了如何在嵌入式系统中使用mbedtls和ECDSA实现安全通信,重点探讨了ECDSA相比RSA的优势、mbedtls的模块化裁剪策略、密钥安全存储方案以及完整的签名验签流程。通过实战案例和优化技巧,帮助开发者在资源受限环境下构建高效可靠的安全通信系统。

weixin_28338005的博客 685

python 小说-用python给自己做一款小说阅读器过程详解

前言前一段时间书荒的时候,在喜马拉雅APP发现一个主播播讲的小说-大王饶命。听起来感觉很好笑,挺有意思的,但是只有前200张是免费的,后面就要收费。一章两毛钱,本来是想要买一下,发现说的进度比较慢而且整本书要1300多张,算了一下,需要200大洋才行,而且等他说完,还不知道要到什么时候去。所以就找文字版的来读,文字版又有它的缺点,你必须手眼联动才行。如果要忙别的事情,但是又抑制不住想看的冲动,就很...

weixin_37988176的博客 1281

BMC的风扇控制 (Fan speed control)

这篇文章是我刚开始做风扇功能的时候写的,因为那时候都找不到主管要我报告的内容,所以报告完就顺便整理一下,最近因为在修控制学,之后应该会再补一篇和控制学相关的内容 (如果有空的话) BMC的风扇控制算一个蛮重要的功能,那这个功能包含了"TACH"和"PWM"这两个常用讯号怎么解读,还有最常用的控制演算法"PID(closed loop)"和"Stepwise(openloop)",而另外的Error control ,因为每家做法不同,就不会在这边作介绍 ##实作程式码是来自Facebook的openBM

yeiris的博客 1万+

Python FastAPI 面试题及参考答案

FastAPI 的路由机制是其核心功能之一,用于将不同的 URL 路径映射到相应的处理函数。通过定义路由,可以构建出功能丰富的 API。在 FastAPI 中,使用装饰器来定义路由。在这个示例中,是一个装饰器,它将根路径"/"的 GET 请求映射到read_root函数。当客户端发送一个 GET 请求到根路径时,FastAPI 会调用read_root函数并返回结果。

大模型大数据攻城狮的专栏 2241

使用LSTM生成文本

使用LSTM生成文本,较小的温度值会得到极端重复和可预测文本,但局部结构是非常真实的,特别时所有单词都是真正的英文单词(单词就是字符的局部模式)。随着温度值越来越大,生成的文本也变得更有趣,更出乎意料,甚至更有创造性,它有时会创造出全新的单词。

weixin_47492805的博客 1143

【YOLOv11多模态涨点改进】独家创新首发| TGRS 2026 |引入 CIFusion 通道交互融合模块,通过跨特征交互机制强化目标区域响应,适合多模态融合目标检测,小目标检测高效涨点

🔥本文提出了一种改进YOLOv11多模态目标检测模型的方法,通过引入CIFusion通道交互融合模块来提升RGB与红外特征融合效果。CIF模块采用通道级自适应交互机制,根据全局上下文动态分配不同模态通道的重要性,实现跨模态特征交互与互补信息融合。相比传统拼接或加权融合方式,CIF能够增强目标区域响应,抑制背景噪声,提高小目标和低对比度目标的检测性能。实验表明,该方法在DroneVehicle等数据集上显著提升了检测精度。论文还详细介绍了CIF模块的结构原理、实现代码及模型配置方法。

Ai缝合怪、助力小伙伴高效发论文 186

【NLP】Transformer 唐诗生成器 pytorch 版

参考将模型从 keras 的 LSTM 修改成 pytorch 上的 Transformer 模型,这里只给出与原文不同的地方。

x66ccff 1666

零基础入门篇③ PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

Python从入门到精通👉零基础入门篇③

hacker707的博客 4371

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【ML】 第17章 使用自动编码器和 GAN 的表示学习和生成学习

自动编码器是人工神经网络,能够学习输入数据的密集表示,称为潜在表示或编码,无需任何监督(即,训练集未标记)。这些编码通常具有比输入数据低得多的维度,这使得自动编码器可用于降维(参见第 8 章),尤其是用于可视化目的。自编码器也可以作为特征检测器,它们可以用于深度神经网络的无监督预训练(正如我们在第 11 章中讨论的那样)。最后,一些自编码器是生成模型:它们能够随机生成看起来与训练数据非常相似的新数据。例如,您可以在人脸图片上训练自动编码器,然后它就能够生成新的人脸。然而,生成的图像通常是模糊的,并不完全真实

sikh_0529的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LSTM生成文本(字符级别)

20200817 - 引言 在网上看到过一些利用深度学习来生成文本的文章,不管生成宋词也好,生成小说也好,各种各样,都是利用深度学习的模型来生成新的东西。之前的时候,我也一直觉得,他们这种生成方式,应该就是记忆性的东西,他并没有真正的从语义的角度上理解这个文章。当然,我自己也是才疏学浅,本身就不是专门搞这种东西的人。 本篇文章中,记录一下我在网上看到的一篇利用LSTM生成文本的文章。需要注意的几个点是 1)训练过程中,输入的是什么 2)根据输出,预测的又是什么 3)最后输出的内容是否可读,又是否有意义,是否

围城 1705

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

pytorch 生成小说 rnn 文本生成

pytorch 人工智能 生成小说 训练小说是《穿梭奇幻的科技大亨》训练20轮 生成5000字 很久很久意义进入吗,我在反物质弹……但站你拿有老严你虽此,我已经华夏也陆三派了,好好!”友慑跃回应在地球上自己说的立刻。 对前的皮肤获下下,“苦姨。” “我超导人类不住的科研成果。” 人类早奈金成立刻,颠此的飞船,升!” “课题在外星基地的感觉,我现在半直接随即举起景浪达到来。 “地综传送,这个灵热本就是之力的决定。”杜恪点头,已经过去了,位于卢受的...

绀目澄清 931

GPT2-Chinese 文本生成,训练AI写小说,AI写小说2

在根目录(目录\GPT2-Chinese\)下建立文件夹data 和modeldatamodel。

绀目澄清 1万+

【腾讯云 HAI域探秘】使用ChatGLM2-6B大模型生成自己的专属小说!

以ChatGPT为首的大语言模型从在一年多的时间里面,已经让大家的生活发生了翻天覆地的变化,并且随着大模型技术的不断发展,其应用场景在人们的日常生活中越来越多样化和广泛。例如,在创意激发方面,大模型可以帮助我们提供很多创意,以便激发我们的新思路。在编写代码方面,大模型可以帮助我们排查报错,迅速定位并解决问题。在自媒体方面,大模型可以帮我们迅速列出来大纲,甚至写出来相应的demo。

qq_41308872的博客 6913

python编写程序输出诗句_牛逼了,用Python写个会做诗的机器人

原标题:牛逼了,用Python写个会做诗的机器人上一次的聊天机器人,大家关注度非常的高,阅读量破万了(不到20行代码,用Python做一个智能聊天机器人),通过简单的代码就能实现一个简单的聊天机器人,今天小编就带领大家,利用自然语言处理技术和聊天机器人结合,做一个自动做诗的聊天机器人。1.原理介绍首先,让机器自动做诗,就需要运用自然语言处理的手段,让机器能够学会理解“诗句”,进而做出我们需要的诗句...

weixin_39762478的博客 1214
上一篇: linux系统学习1-8:第1个ARM裸板程序及引申
下一篇: [硬货]| 实例介绍TensorFlow的输入流水线
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值