Deep Learning与PyTorch学习过程中的零散知识点整理(二)

one-hot vs embedding

One-hot: 高维,稀疏,难编码

Embedding:低维,稠密,从数据中习得

self.emb = torch.nn.Embedding(input_size, embedding_size)

注意:

  1. Embedding要确定的参数是:

    num_embedding: the size of the dictionary of embedding

    embedding_dim: the size of each embedding vector

  2. 输入的数据是 LongTensor: (batch_size, seq_len)

  3. 输出的数据是 (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是 h 0 ~ h N h_0~h_N h0hN, hidden是 [ h N f h N b ] [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)

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页