nlp大作业准备(3)

79 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

一.NeuralNet

1.nn.Embedding(max_features,embed_size)

给每个特征的每个维度都embedding成一个p维向量 举例理解:

embedding = nn.Embedding(20, 3)           
# "20"表示 出现的 feature总数 = sum(每个特征所有维度)= N;"3"表示特征的每个维度用p维向量表示(此时p=3)

那这串代码的意思就是生成了一个max_features行的词典,能表示max_features个不同的特征,每个特征用embed_size维向量表示。

2.embedding.wight

一般是默认的参数,然后直接实行embedding.weight但也可以设置参数,在这里就利用了Parameter设置了

3.torch.tensor()

这个在这里embedding_matrix当做data输入,dtype则是这个data的类型

4.require_grad

在这里需要的网格数设置为false

5.nn.LSTM

nn.LSTM是pytorch中的模块函数,在这里是用到了这几个参数

  • nput_size:表示的是输入的矩阵特征数,或者说是输入的维度;
  • hidden_size:隐藏层的大小(即隐藏层节点数量),输出向量的维度等于隐藏节点数;
  • batch_first:True 或者 False,如果是 True,则 input 为(batch, seq, input_size),默认值为:False(seq_len, batch, input_size)
  • bidirectional:如果设置为 True, 则表示双向 LSTM,默认为 False。

6.nn.Linear

torch.nn.Linear(in_featuresout_featuresbias=Truedevice=Nonedtype=None)

  • in_features – 每个输入样本的大小
  • out_features – 每个输出样本的大小

二.forward

1.预备知识

我们在定义自己的网络的时候,需要继承nn.Module类,并重新实现构造函数__init__和forward这两个方法。

(1)一般把网络中具有可学习参数的层(如全连接层、卷积层等)放在构造函数__init__()中,当然我也可以吧不具有参数的层也放在里面;

(2)一般把不具有可学习参数的层(如ReLU、dropout、BatchNormanation层)可放在构造函数中,也可不放在构造函数中,如果不放在构造函数__init__里面,则在forward方法里面可以使用nn.functional来代替

(3)forward方法是必须要重写的,它是实现模型的功能,实现各个层之间的连接关系的核心。

2.cat() 函数目的: 在给定维度上对输入的张量序列seq 进行连接操作。

outputs = torch.cat(inputs, dim=?) → Tensor

torch.cat((max_pool,avg_pool),1)

3.F.relu() 目的:激活函数

4.torch.nn.Linear(hidden_layer, output_data) 完成从隐藏层到输出层的线性变换