梯度维度变化会报错
Opened this issue · 5 comments
shinesun130 commented
您好,感谢分享,想请问下如果每个任务的梯度不是一维时怎么处理的?一般网络中梯度的维度不是一维的,比如把demo中的b改成b = tf.Variable(tf.zeros([4,1]))这样的维度,demo会有错误,请问如何修改呢?有更详细的代码吗?期待解答,谢谢。
jackielinxiao commented
获取梯度这个有很多办法,你可以尝试先获取梯度以后再做计算,这个demo只是一个示例,核心的算法都在pareto_step里面,每个任务的梯度可以通过reshape转成一个一维的张量。
shinesun130 <notifications@github.com> 于2020年3月12日周四 下午2:06写道:
… 您好,感谢分享,想请问下如果每个任务的梯度不是一维时怎么处理的?一般网络中梯度的维度不是一维的,比如把demo中的b改成b =
tf.Variable(tf.zeros([4,1]))这样的维度,demo会有错误,请问如何修改呢?有更详细的代码吗?期待解答,谢谢。
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#2>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABVXWJYCOHM2V3B2K6IW7HTRHB3VNANCNFSM4LGE72WQ>
.
shinesun130 commented
shinesun130 commented
另外对于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呢?谢谢
jackielinxiao commented
是的
shinesun130 <notifications@github.com> 于2020年3月14日周六 下午12:19写道:
…
感谢回复,我这里对每个任务做了梯度结果是一个不同维度tensor的list(如图),如何转化成一维张量呢?是分别把list中每一参数的梯度都reshape成一维的tensor,然后再concat吗?多谢。
[image: image]
<https://user-images.githubusercontent.com/26108671/76674794-03e23680-65ee-11ea-8cb1-06db168b3155.png>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#2 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABVXWJ5NMWE3BMIZVU3HJ2DRHMAWHANCNFSM4LGE72WQ>
.
shinesun130 commented
感谢回复