简单的记录一下自己对于这个模型的理解,以10000300为例
    这个模型的输入是一个one_hot编码的词向量,也就是中心词为一其他的为零的向量(1
    10000)
    然后这个向量和矩阵1(10000300)相乘,得到了(1300)这里就是描述中心词的词向量
    然后用这个1300的词向量乘上30010000的矩阵2,得到110000的结果
    1
    10000的结果利用softmax进行处理,就会得到10000个和为1的概率分布
    这个结果和对应的y_label,就是窗口词进行loss计算然后优化
    (部分的说法认为矩阵1和矩阵2是不一样的,但是在实验中两个矩阵的值是相等的,我觉得是因为在loss的优化里是同时对两个嵌入矩阵进行修改,所以虽然变量不一样,但是值是一样的)

    考虑对模型功能进行完善,增加了断点继续训练以及保存训练log的功能
    代码见https://github.com/Ricardokevins/Local_python/blob/master/Deeplearning/temp.py

    主要是

    1. if os.path.exists('checkpoint.pth.tar'):
    2. checkpoint = torch.load('checkpoint.pth.tar')
    3. model.load_state_dict(checkpoint['state_dict']) # 模型参数
    4. optimizer.load_state_dict(checkpoint['optimizer']) # 优化参数
    5. iter = checkpoint['iter']
    6. epoch=checkpoint['epoch']
    7. print("loading successfully!!!")
    1. if i % 1000 == 0:
    2. state = {'iter': i + 1, # 保存的当前轮数
    3. 'epoch':e,
    4. 'state_dict': model.state_dict(), # 训练好的参数
    5. 'optimizer': optimizer.state_dict(), # 优化器参数,为了后续的resume
    6. 'embedding': model.input_embeddings()
    7. }
    8. # 保存模型到checkpoint.pth.tar
    9. torch.save(state, 'checkpoint.pth.tar')
    10. print("save success")

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