动手学pytorch-循环神经网络基础

循环神经网络的构造

假设\(\boldsymbol{X}_t \in \mathbb{R}^{n \times d}\)是时间步\(t\)的小批量输入,\(\boldsymbol{H}_t \in \mathbb{R}^{n \times h}\)是该时间步的隐藏变量,则:

\[
\boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} + \boldsymbol{b}_h).
\]

其中,\(\boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h}\),\(\boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h}\),\(\boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h}\),\(\phi\)函数是非线性激活函数。由于引入了\(\boldsymbol{H}_{t-1} \boldsymbol{W}_{hh}\),\(H_{t}\)能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于\(H_{t}\)的计算基于\(H_{t-1}\),上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。

在时间步\(t\),输出层的输出为:

\[
\boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q.
\]

其中\(\boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q}\),\(\boldsymbol{b}_q \in \mathbb{R}^{1 \times q}\)。

手写实现循环网络

[tensor([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.]]),
 tensor([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.]]),
 tensor([[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.]]),
 tensor([[0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.]]),
 tensor([[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])]

RNN类

定义预测函数

分开等他危画问距忙阳站外死
不分开腮是叫几子邂感坟哀寞司
旁边蛇实待密沙坏干蟑鸠补W

train_and_predict_rnn(rnner, True)
epoch 50, perplexity 71.522363, time 0.79 sec
 - 分开 我想要这生 我不要这 你有我 别你我 我不要你的 我不能 你爱我不 你想你 你爱我 我不要你的 我不
 - 不分开 我想要这生 我不要这 你有我 别你我 我不要你的 我不能 你爱我不 你想你 你爱我 我不要你的 我不
epoch 100, perplexity 10.305623, time 0.75 sec
 - 分开 有使我 娘不依 快步默 一步四颗 连成线 的路段 三间四人 在小之 快沉默 娘子四颗 在头主 的路段
 - 不分开永 我有你烦 你知我 别怪我 娘子却人 在指忆 的片段 三一些风慢 老唱苦 旧皮堂 装属都有 连头的
epoch 150, perplexity 2.958872, time 0.72 sec
 - 分开 有什么 一步两步三步四步望著天 看星星 一颗两颗三颗四颗 连成线背著背默默许下心愿 看远方的星是否听
 - 不分开吗 我已你爸 你知我妈 这样了看怎么慢慢 就想开不之口让她知道 我一定会呵护著你 手著你说 你对我有多
epoch 200, perplexity 1.605667, time 0.76 sec
 - 分开 有什去 一步两步三步四步望著天 看星星 一颗两颗三颗四颗 连成线背著背 默荡在蓝安排 连攻抢邻池里
 - 不分开期 我叫你爸 你打我妈 这样对吗去嘛这样 还必让不牵鼻子走 瞎 太狼险的 快时光 分怎堂囱术的老板 练
epoch 250, perplexity 1.314792, time 0.78 sec
 - 分开球了像想的我 在小村 我给还 穿发却依旧每日折一枝杨柳 在小村外的溪边河口 默默地你 泪去会枪 硬底子
 - 不分开期 我叫你爸 你打我妈 这样对吗干嘛这样 何必让酒牵鼻子走 瞎 说午险的 不的事我担朋 静属于头的我 
train_and_predict_rnn(rnner, False)
epoch 50, perplexity 2721.856866, time 2.80 sec
 - 分开  说
 - 不分开
epoch 100, perplexity 72.404022, time 1.22 sec
 - 分开的黑实一人的可爱女人啦过我不轻不可一步的在斑鸠的风不下不著不能不的我面女的可爱女人我想能的可我面狂的可
 - 不分开吗个打我想要你的微我不狂的可爱女人我的你的手怎著的风娘下的可爱女人我想想的可爱女人龙坏坏不多我想你的爱
epoch 150, perplexity 95.646535, time 1.21 sec
 - 分开 出只还会想你让我有见活一多的手快每了有过你在它都着日有多你手在都我有无头着多的手快在人的手斑女人的手
 - 不分开觉 我不多的可样依默的我怎么人的口子在默我想你开 不过我有多再着多都想一我的可爱女人我想明的可样在默默
epoch 200, perplexity 163.254149, time 1.18 sec
 - 分开 她色 会天不起 你跟 你著起你 你堡 你子休你 你知 你子休你 你知不起 你跟了 想你 不起你 你你
 - 不分开觉 你想 快一起你一你  你子了一天 你跟已你 你 心你 你一休 不爱了一起跟 已什的让你心 不想 一
epoch 250, perplexity 276.336192, time 1.21 sec
 - 分开  不知我 我 一 我有多  我 我 我 一沉的有  一样着 我 一 我有一的我  我不要 我  这样
 - 不分开觉 却多透和不  一是一 一 我有多 一 我 一实我 一 是不  一是我 一 我有一  我 我 我 一

使用pytorch简洁实现

epoch 50, perplexity 11.038127, time 0.52 sec
 - 分开 我有你的爱我 一个着 你说的美主 一枝杨柳 你在那里 你想要再不要 不想我不多你不 我不要再想你
 - 不分开 我想要你不多 我 就你了你我不能 想要你的让我面红的可爱女人 坏坏的让我疯狂的可爱女人 坏坏的让我
epoch 100, perplexity 1.257996, time 0.67 sec
 - 分开 我来了太快就我想要你的微笑每天都能的爱你 我知道你 我面听的 何像了 什么我有多难熬多 没有你有不
 - 不分开 不能承受我已无处可躲 我不要再想 我不要再想 我不 我不 我不要再想你 不要再想 我不 我不 我不
epoch 150, perplexity 1.065657, time 0.59 sec
 - 分开 我来了太快地我感动 河边的我 还是一定会 它一定中篮板 有它一直落口  是开 心话 这样的节奏 我
 - 不分开 不能 这样打我妈手 我说啊 你不那有我想要你不你 我 我你想你 不知不觉 你已经离开我 不知不觉
epoch 200, perplexity 1.032287, time 0.59 sec
 - 分开 我不了太多 我想一直说你听  着头 这故事 告诉我 印地安的传说 还真是 瞎透了 什么都有 这故事
 - 不分开 不能承受快使用双截棍 哼哼哈兮 快使用双截棍 哼哼哈兮 习武之人切记 仁者无敌 是谁在练太极 风生
epoch 250, perplexity 1.020809, time 0.62 sec
 - 分开 我不了太多地我想一直到以听 它一定一切得载著  这感动 三颗四颗 连成线一步两步三步四步望著天 看
 - 不分开 不能承受快已无处可躲 我不要再想 我不要再想 我不 我不 我不要再想你 不知不觉 你已经离开我 不

原文地址:https://www.cnblogs.com/54hys/p/12304369.html

时间: 2024-10-28 23:13:35

动手学pytorch-循环神经网络基础的相关文章

动手学pytorch-卷积神经网络基础

卷积神经网络基础 1.二维卷积层 2.填充和步幅 3.多输入通道和多输出通道 4.卷积层与全连接层的对比 5.池化 1.二维卷积层 二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter).卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素.图1展示了一个互相关运算的例子,阴影部分分

DataWhale 动手学深度学习PyTorch版-task3+4+5:文本预处理;语言模型;循环神经网络基础

课程引用自伯禹平台:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV <动手学深度学习>官方网址:http://zh.gluon.ai/ ——面向中文读者的能运行.可讨论的深度学习教科书. 第二次打卡: Task03: 过拟合.欠拟合及其解决方案:梯度消失.梯度爆炸:循环神经网络进阶 Task04:机器翻译及相关技术:注意力机制与Seq2seq模型:Transformer Task05:卷积神经网络基础:leNet:卷积神经网络进阶 有

动手学pytorch-循环神经网络进阶

循环神经网络进阶 1.GRU 2.LSTM 3.Deep RNN 4.Bidirection NN 1.GRU RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT) ?控循环神经?络:捕捉时间序列中时间步距离较?的依赖关系 1.1数学表达式 \[ R_{t} = σ(X_tW_{xr} + H_{t?1}W_{hr} + b_r)\\ Z_{t} = σ(X_tW_{xz} + H_{t?1}W_{hz} + b_z)\\ \widetilde{H}_t = tanh(X_tW_{xh} +

【动手学pytorch】softmax回归

一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉熵损失函数 在估计损失时,尤其是概率上的损失,交叉熵损失函数更加常用.下面是交叉熵 当我们预测单个物体(即每个样本只有1个标签),y(i)为我们构造的向量,其分量不是0就是1,并且只有一个1(第y(i)个数为1).于是.交叉熵只关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确.遇

动手学servlet(二) servlet基础

1.我们来试着向一个servlet提交一个表单,现在webcontent下新建一个login.html页面,其中action对应servelt类名,代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;

动手学深度学习PyTorch版-task02

task0201.文本预处理 代码解读 import collections import re with open('timemachine.txt', 'r', encoding='UTF-8') as f: lines = [re.sub('[^a-z]+', ' ', line.strip().lower()) for line in f] print(lines) In[8]: lines[0] Out[8]: 'the time machine' In[9]: lines[1] Ou

对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF

随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中可以大获全胜?人工智终将会取代人类智慧吗? <神经网络与深度学习>是一本介绍神经网络和深度学习算法基本原理及相关实例的书籍,它不是教科书,作者已尽量把公式减少到最少,以适应绝大部分人的阅读基础和知识储备.<神经网络与深度学习>涵盖了神经网络的研究历史.基础原理.深度学习中的自编码器.深

小白学习之pytorch框架(2)-动手学深度学习(begin)

在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比较执着,想学pytorch,好,有个大神来了,把<动手学深度学习>整本书用pytorch代码重现了,其GitHub网址为:https://github.com/ShusenTang/Dive-into-DL-PyTorch   原书GitHub网址为:https://github.com/d2l-

分享《动手学深度学习(李沐等著)》PDF+源代码+《神经网络与深度学习(吴岸城)著》PDF

下载:https://pan.baidu.com/s/11O2m_uxSWJGbkXHF2Zh94w 更多资料:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA <动手学深度学习(李沐等著)> 中文PDF,530页,带书签目录,文字可以复制粘贴.配套源代码. <神经网络与深度学习 (吴岸城)著>中文PDF,233页,带书签目录. 如图: 原文地址:https://www.cnblogs.com/limujun/p/10054478.ht