简单的记录一下自己对于这个模型的理解,以10000300为例
这个模型的输入是一个one_hot编码的词向量,也就是中心词为一其他的为零的向量(110000)
然后这个向量和矩阵1(10000300)相乘,得到了(1300)这里就是描述中心词的词向量
然后用这个1300的词向量乘上30010000的矩阵2,得到110000的结果
110000的结果利用softmax进行处理,就会得到10000个和为1的概率分布
这个结果和对应的y_label,就是窗口词进行loss计算然后优化
(部分的说法认为矩阵1和矩阵2是不一样的,但是在实验中两个矩阵的值是相等的,我觉得是因为在loss的优化里是同时对两个嵌入矩阵进行修改,所以虽然变量不一样,但是值是一样的)
考虑对模型功能进行完善,增加了断点继续训练以及保存训练log的功能
代码见https://github.com/Ricardokevins/Local_python/blob/master/Deeplearning/temp.py
主要是
if os.path.exists('checkpoint.pth.tar'):checkpoint = torch.load('checkpoint.pth.tar')model.load_state_dict(checkpoint['state_dict']) # 模型参数optimizer.load_state_dict(checkpoint['optimizer']) # 优化参数iter = checkpoint['iter']epoch=checkpoint['epoch']print("loading successfully!!!")
if i % 1000 == 0:state = {'iter': i + 1, # 保存的当前轮数'epoch':e,'state_dict': model.state_dict(), # 训练好的参数'optimizer': optimizer.state_dict(), # 优化器参数,为了后续的resume'embedding': model.input_embeddings()}# 保存模型到checkpoint.pth.tartorch.save(state, 'checkpoint.pth.tar')print("save success")

有了如上的成果(寻找“china”的相似词)
然后利用同样的模型对中文文本进行了训练(寻找“一个”的相似词)
