gnn的一些疑问
Created by: searchlink
感谢提供paddle的实现, 目前在复现过程中遇到一些问题. 在文件夹PaddleRec\gnn
1.首先reader.py中make_data()函数的定义
,关于label.append(e[1] - 1)中,为什么需要对label减1这样处理
2.关于network.py中network()函数的定义
, 关于gnn多步传播的过程中,关于step>1的计算shape疑问。
for i in range(step):
pre_state = layers.reshape(x=pre_state, shape=[batch_size, -1, hidden_size])
state_in = layers.fc(input=pre_state, size=hidden_size, )
state_out = layers.fc(input=pre_state, size=hidden_size, )
state_adj_in = layers.matmul(adj_in, state_in)
...
pre_state, _, _ = fluid.layers.gru_unit( input=gru_fc,
hidden=layers.reshape(x=pre_state, shape=[-1, hidden_size]),
size=3 * hidden_size)
当 step>1, i =0
, 此时pre_state:[batch_size, uniq_max, hidden_size]
, 经过GRU之后的pre_state
输出: [batch_size, hidden_size]
.
当i=1时, 此时pre_state: [batch_size, 1, hidden_size]
,adj_in: [batch_size, uniq_max, uniq_max]
. 此时layers.matmul(adj_in, state_in): [batch_size, uniq_max, uniq_max] * [batch_size, 1, hidden_size]
无法进行运算。麻烦帮忙解释下~多谢