one-hot vs embedding
One-hot: 高维,稀疏,难编码
Embedding:低维,稠密,从数据中习得
self.emb = torch.nn.Embedding(input_size, embedding_size)
注意:
-
Embedding要确定的参数是:
num_embedding: the size of the dictionary of embedding
embedding_dim: the size of each embedding vector
-
输入的数据是 LongTensor: (batch_size, seq_len)
-
输出的数据是 (batch_size, seq_len, embedding_size)
self.rnn = torch.nn.RNN(input_size=self.embedding_size,
hidden_size=self.hidden_size,
num_layers=self.num_layers,
batch_first=True)
embedding层之后是rnn层,即embeding层的输出是rnn层的输入,所以将rnn的参数batch_first设为True。则输入输出变为以下形式:
输入:(batch_size, seq_len, embedding_size)
输出:(batch_size, seq_len, hidden_size)
双向循环神经网络

输出:output是h0~hNh_0~h_Nh0~hN, hidden是 [hNfhNb][h_N^f h_N^b][hNfhNb]
pack_padded_sequence和pad_packed_sequence
https://blog.csdn.net/lssc4205/article/details/79474735
-
输入需要两个参数:
embedding:embedding层的输出: (seq_len, batch_size, hidden_size)
seq_lengths: 一个list,存有每个序列的长度(降序排列)
-
输出:返回PackedSquence Object(可直接送入LSTM、GRU和RNN)
本文探讨了在深度学习中one-hot编码与embedding的区别,强调embedding的低维稠密特性及其参数设置。同时,介绍了双向循环神经网络的应用,并详细讲解了在处理变长序列时,如何使用pack_padded_sequence和pad_packed_sequence进行数据预处理。
211

被折叠的 条评论
为什么被折叠?



