hexiangnan / attentional_factorization_machine

TensorFlow Implementation of Attentional Factorization Machine
407 stars 156 forks source link

关于pretrain with FM的疑惑 #3

Closed SunBUPT closed 6 years ago

SunBUPT commented 6 years ago

非常感谢您的分享! 看了您的文章和代码,有一点小疑惑: 文章中提到:For Wide&Deep, DeepCross and AFM, we find that pre-training their feature embeddings with FM leads to a lower RMSE than a random initialization.As such, we report their performance with pre-training. 这个在命令行中具体是怎样实现预训练的呢? 按照Readme中的说明输入AFM.py的命令行后会报错,因为找不到预训练模型,即使将fm预训练模型放入pretrain/afm_ml-tag_16文件夹中也会因meta文件中参数不匹配而无法使用,请问该怎么处理呢? (另外,因为FM默认hidden_factor=16,那AFM命令行中--hidden_factor [8,256]是不是应该改为--hidden_factor [16,16]?)

train FM model and save as pretrain file

python FM.py --dataset ml-tag --epoch 100 --pretrain -1 --batch_size 4096 --lr 0.01 --keep 0.7

train AFM model using the pretrained weights from FM

python AFM.py --dataset ml-tag --epoch 100 --pretrain 1 --batch_size 4096 --hidden_factor [8,256] --keep [1.0,0.5] --lamda_attention 2.0 --lr 0.1

hexiangnan commented 6 years ago

你好,非常感谢你的反馈! 根据你的描述,我检查了一下code,很抱歉,原来的说明以及code确实有问题,我做了如下修改:

  1. FM.py中默认hidden factor改为256,和readme中的example参数设置保持一致;
  2. readme中,与训练fm的code,增加了--hidden_factor 256的参数;
  3. 注释了FM.py和AFM.py的main函数里几行没用的代码;

你说的meta参数不匹配我没遇到,可能是参数设置不对,现在的code我试验过应该没有问题了,还请更新代码后再试试看。如有问题欢迎继续讨论,如果OK了也烦请告知,我好关闭这个issue,谢谢!

SunBUPT commented 6 years ago

已经运行成功了!非常感谢!