softmax和分类模型:
- 输出
直接输出(非softmax):难以直观判断每个值的意义;真实标签的离散值和输出值的误差难以衡量
- 损失函数
交叉熵;平方损失过于严格,我们只要其中一个值大于其他值即可。
文本预处理
步骤:
- 读入文本
- 分词(除去低频词)
- 建立字典,词到索引的映射
- 将文本从词序列转为索引序列,方便模型的输入
语言模型
语言模型的目标就是评估单词序列是否合理,即: P ( w 1 , w 2 , . . . , w T ) P(w_1,w_2,...,w_T) P(w1,w2,...,wT)
马尔可夫假设:
一个词的出现只与前面n个词有关,即n阶马尔可夫链。
n-grams
n=1,2,3时,分别称作unigram、bigram、trigram
举例:
长度为4的序列
w
1
,
w
2
,
w
3
,
w
4
w_1, w_2, w_3, w_4
w1,w2,w3,w4,一元、二元、三元分别为
pytorch两个操作:gather、scatter
gather从src中提取元素形成out:
out = torch.gather(input, dim, index)
out[i][j] = input[index[i][j]] [j] # dim=0
out[i][j] = input[i] [index[i][j]] # dim=1
记住一点:index中的元素表示的是索引,dim=0,表示的就是行索引;dim=1,表示的就是列索引。
取出该元素便获取一个位置,另一个位置就是index当前对应位置。
scatter从src中提取元素形成out:
out = torch.scatter(dim, index, input)
out[index[i][j]] [j] = src[i][j] # if dim == 0
out[i] [index[i][j]] = src[i][j] # if dim == 1
记住一点:index中的元素表示的是索引,dim=0,表示的就是行索引;dim=1,表示的就是列索引。
区别:
gather(获取)中index表示的是input中的索引;
scatter(设置)中index表示的是output中的索引。