我知道几年前已经问过这个问题,但我认为我的问题有点不同(可能会出现解决方案)。
我正在使用theano训练神经网络。我的输入样本有不同的大小,所以我重新定义了每个输入样本的整个成本函数,这使得theano非常慢(即使使用快速编译标志,这确实有所改进,但还不够)。
就theano而言,在每个新样本中,我都在定义一个从头开始的全新函数。然而,我使用相同的构建块来产生成本函数,因为99%的成本函数是通过
T.nnet.softmax(T.dot(W,h)+b)
。不同之处在于每次h
我都放在那里。
据我所知,我不能使用theano.function
将其定义为构建块,因为我无法将其作为输入提供符号变量h
(也就是说,定义为通过另一个这样的计算)。我也不能使用theano.scan
因为我没有我重复应用函数的数据流。
我确实认为应该能够改进这一点,因为毕竟,考虑到神经网络的理论,我的结构在这里很容易使用错误信息传递来导出,但我不知道我怎么能“告诉“theano,我实际上是在一遍又一遍地从同一个街区建立我的网络。
*由于我总是在改变我的网络结构,我想避免直接反向计算,这就是我使用theano的原因。
我很感激有关这个问题的任何帮助。