没有合适的资源?快使用搜索试试~ 我知道了~
1 简介 本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。 2 相关API的说明 pytorch框架中每种网络模型都有构造函数,在构造函数中定义模型的静态参数,这些参数将对模型所包含weights参数的维度进行设置。在运行时,模型的实例将接收动态的tensor数据并调用forword,在得到模型输出之后便可以和真实的标签数据进行误差计算,并通过优化器进行反向传播以调整模型的参数。下面重点介绍NLP常用到的模型和相关方法。 2.1 nn.Embedding 词嵌入层是NLP应用中常见的模块。在word2vec出现之前,一种方
资源推荐
资源详情
资源评论
Pytorch实现基于实现基于CharRNN的文本分类与生成示例的文本分类与生成示例
1 简介简介
本篇主要介绍使用pytorch实现基于CharRNN来进行文本分类与内容生成所需要的相关知识,并最终给出完整的实现代码。
2 相关相关API的说明的说明
pytorch框架中每种网络模型都有构造函数,在构造函数中定义模型的静态参数,这些参数将对模型所包含weights参数的维度
进行设置。在运行时,模型的实例将接收动态的tensor数据并调用forword,在得到模型输出之后便可以和真实的标签数据进
行误差计算,并通过优化器进行反向传播以调整模型的参数。下面重点介绍NLP常用到的模型和相关方法。
2.1 nn.Embedding
词嵌入层是NLP应用中常见的模块。在word2vec出现之前,一种方法是使用每个token的one-hot向量进行运算。one-hot是一
种稀疏编码,运算效果较差。word2vec用于生成每个token的Dense向量表示。目前的研究结果证明,word2vec可以有效提升
模型的训练效果。
pytorch的模型提供了Embedding模型用于实现词嵌入过程Embedding层中的权重用于随机初始化词的向量,权重参数在后续
的训练中会被不断调整,并被优化。
模型的创建方法为:embeding = nn.Embedding(vocab_size, embedding_dim)
vocab_size 表示字典的大小
embedding_dim 词嵌入的维度数量,通常设置远小于字典大小,60-300之间通常可满足需要
使用:embeded = embeding(input)
input 需要嵌入的句子,可为任意维度。单个句子表示为token的索引列表,如[283, 4092, 1, ]
output 数据的嵌入表示,shape=[*, embedding_dim],*为input的维度
示例代码:
import torch
from torch import nn
embedding = nn.Embedding(5, 4) # 假定语料只有5个词,词向量维度为3
sents = [[1, 2, 3],
[2, 3, 4]] # 两个句子,how:1 are:2 you:3, are:2 you:3 ok:4
embed = embedding(torch.LongTensor(sents))
print(embed) # shape=(2
'''
tensor([[[-0.6991, -0.3340, -0.7701, -0.6255],
[ 0.2969, 0.4720, -0.9403, 0.2982],
[ 0.8902, -1.0681, 0.4035, 0.1645]],
[[ 0.2969, 0.4720, -0.9403, 0.2982],
[ 0.8902, -1.0681, 0.4035, 0.1645],
[-0.7944, -0.1766, -1.5941, 0.4544]]], grad_fn=<EmbeddingBackward>)
'''
2.2 nn.RNN
RNN是NLP的常用模型,普通的RNN单元结构如下图所示:
资源评论
weixin_38748207
- 粉丝: 7
- 资源: 917
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功