text_gcn
text_gcn copied to clipboard
关于特征向量矩阵
比如有1000个句子的数据集(900训练+100测试),词汇表有10000,那么您代码中使用的adj是前900代表训练文档,中间的10000为word,最后的100为测试文档是吧,然后我看到代码中初始化了特征向量(文档为0向量,word为随机向量),但是最后统一改成了单位矩阵。 我现在有这1000个句子和10000个word的特征表示向量,我想问的是如何将这些feature一一对应到adj中呢?adj是根据哪个变量按什么顺序排列的呢?
@demons6665
最后的特征向量为单位矩阵,只在对角线上为1,也就是每个节点只在adj中对应的位置的那一维为1,特征向量的每一行和adj的每一行是一一对应的。
这样有个问题,那应该怎样使用初始化的特征向量呢?比如要使用初始化的词向量,词向量是300维。将特征向量设置为单位矩阵,feature是[node,node]大小,但是使用初始化的特征向量,feature该是[node,300]么?
@lidejian
使用初始化的特征向量,feature该是[node,300]。 我试过在Text GCN的图中用GloVe词向量作为词节点的初始化,文档中词向量的平均作为文档向量初始化,但发现效果不太好。
如果我要用初始化的特征向量,我除了在build_graph.py里面把预训练的特征向量加上,我还应该在train.py里面对features做怎样的处理呢?非常期待您能回答我,因为我对这方面也不是太懂
@VeitchG
在build_graph.py里面把预训练的特征向量加上, 在train.py中把features = sp.identity(features.shape[0])注释掉即可。
@yao8839836 非常感谢您的答复,我试了在train.py中把features = sp.identity(features.shape[0])注释掉,报出了维度错误,之后我又在model.py中将GraphConvolution(input_dim=self.input_dim, output_dim=FLAGS.hidden1, placeholders=self.placeholders, act=tf.nn.relu, dropout=True, featureless=False, sparse_inputs=True, logging=self.logging)) 中的featureless更改成False就可以跑了,是这样改的么?
@VeitchG
是的,那里也要改。