当前位置:  开发笔记 > 编程语言 > 正文

Theano在计算渐变方面的效率/智能程度如何?

如何解决《Theano在计算渐变方面的效率/智能程度如何?》经验,为你挑选了0个好方法。

假设我有一个有5个隐藏层的人工神经网络.目前,忘记神经网络模型的细节,如偏差,使用的激活函数,数据类型等等.当然,激活功能是可区分的.

通过符号区分,以下计算目标函数相对于图层权重的渐变:

w1_grad = T.grad(lost, [w1])
w2_grad = T.grad(lost, [w2])
w3_grad = T.grad(lost, [w3])
w4_grad = T.grad(lost, [w4])
w5_grad = T.grad(lost, [w5])
w_output_grad = T.grad(lost, [w_output])

通过这种方式,计算梯度WRT W1梯度WRT W2,W3,W4和W5必须先计算.类似于计算梯度wrt w2,梯度wrt w3,必须首先计算w4和w5.

但是,我可以使用以下代码计算每个权重矩阵的渐变:

w1_grad, w2_grad, w3_grad, w4_grad, w5_grad, w_output_grad = T.grad(lost, [w1, w2, w3, w4, w5, w_output])

我想知道,这两种方法在性能方面有什么区别吗?Theano是否足够智能以避免使用第二种方法重新计算渐变?智能我的意思是计算w3_grad,Theano应该[最好]使用w_output_grad,w5_grad和w4_grad的预先计算的梯度,而不是再次计算它们.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有