假设我有一个多重损失定义为 losses = ... # a tensor with shape: (10,) 现在我想找出每个损失在一个权重w上的梯度 for i in range(len(10)):
grad[i] = tf.gradients(losses[i], w) 现在,我可以不使用上面的for循环而直接做到这一点吗?
我目前正在做一个用tensorflow和keras实现的神经网络,我需要做的是调用一个我不能重新实现的函数,它在numpy数组上工作,而不是在张量上工作,我的第一个想法是像这样调用.numpy
defModel.fit期间,如果你试图在张量上调用y.numpy,你会得到错误Tensor has no attribute numpy,这是因为.numpy只在紧急执行中工作,而不是在图形执行中(至少这是我所理解的)有没有人知道一种在numpy数组上创建自定义损失函数的方法?
我试图通过传递损失来使用tf.gradient计算梯度,并使用梯度更新权重。我观察到当权重矩阵维数较大时,梯度为零。这可能是什么原因呢?
我看到代码中没有错误。我得到了权重矩阵和输入向量大小较小的非零梯度。通常,对于1*100的输入向量大小和100x50的权重,fp值将为1 x 50。在BP期间,ip将为1 x 50,权重将为50 x 100。损失是前向传播(FP)和后向传播(BP)值的差值之和。F