深度学习与Pytorch入门实战(十三)RNN

本文介绍了Pytorch中RNN的基本概念,包括词嵌入、nn.RNN模块的参数、前向传播过程,以及如何构建多层循环网络。详细阐述了nn.RNNCell的工作原理,区别于nn.RNN的一次性处理整个序列,RNNCell逐时刻处理输入。
摘要由CSDN通过智能技术生成

笔记摘抄

1. 词嵌入

nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, 
             max_norm=None, norm_type=2.0, scale_grad_by_freq=False, 
             sparse=False, _weight=None)
  • 其为一个简单的 存储固定大小的词典嵌入向量的查找表

    • 意思是说,给一个编号,嵌入层就能 返回这个编号对应的嵌入向量(嵌入向量反映了各个编号代表的符号之间的语义关系)
  • 输入:一个编号列表,输出:对应的 符号嵌入向量列表。

  • num_embeddings(int):词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999);

  • embedding_dim(int): 嵌入向量的维度,即用多少维来表示一个符号;

  • padding_idx(int,可选):比如,输入长度为100,但是每次的句子长度并不一样,后面就需要用统一的数字填充,而这里就是指定这个数字;

  • max_norm(float,可选):最大范数,如果嵌入向量的范数超过了这个界限,就要进行再归一化;

  • norm_type (float, 可选):指定利用什么范数计算,并用于对比max_norm,默认为2范数;

  • scale_grad_by_freq (boolean, 可选):根据单词在mini-batch中出现的频率,对梯度进行放缩,默认为False;

  • sparse (bool, 可选):若为True,则 与权重矩阵相关的梯度 转变为稀疏张量;

import torch
from torch import nn

# 给单词编索引号
word_to_idx = {'hello':0, 'world':1}                                      
# 得到目标单词索引
lookup_tensor = torch.tensor([word_to_idx['hello']], dtype=torch.long)    

embeds = nn.Embedding(num_embeddings=2, embedding_dim=5)
# 传入单词的index,返回对应的嵌入向量
hello_embed = embeds(lookup_tensor)               
print(hello_embed)
tensor([[ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值