jackielinxiao/PE-LTR

梯度维度变化会报错

Opened this issue · 5 comments

您好,感谢分享,想请问下如果每个任务的梯度不是一维时怎么处理的?一般网络中梯度的维度不是一维的,比如把demo中的b改成b = tf.Variable(tf.zeros([4,1]))这样的维度,demo会有错误,请问如何修改呢?有更详细的代码吗?期待解答,谢谢。

感谢回复,我这里对每个任务做了梯度结果是一个不同维度tensor的list(如图),如何转化成一维张量呢?是分别把list中每一参数的梯度都reshape成一维的tensor,然后再concat吗?多谢。

image

另外对于sparse 参数梯度是IndexedSlices类型 IndexedSlices(indices=Tensor("Loss/gradients/concat_1:0", shape=(?,), dtype=int64), values=Tensor("Loss/gradients/concat:0", shape=(?, 4), dtype=float32), dense_shape=Tensor("Loss/gradients/hash_embedding_layer/GatherV2_1_grad/ToInt32:0", shape=(2,), dtype=int32)),这种如何reshape成一维tensor呢?谢谢

感谢回复