我想存储中间结果,以避免对一件事进行多次计算。我正在寻找的是这样的:
h1_activ = sigmoid(self.bias_visiblie + T.dot(D, self.W))
h1_sample = h1_activ > rnds.uniform((n_samples, self.n_hidden ))
f_h1_sample = theano.function(
inputs=[D],
outputs=h1_sample,
# I'd like to take the result from 'h1_sample' and store it into 'H1_sample'
updates=[(self.H1_sample, ??? )]
)
上面的代码当然没有运行但有没有办法做这样的事情?将中间值存储到共享变量中?
答案 0 :(得分:1)
您可以在同一theano.function
中编写使用相同中间结果的最终结果。
例如:
h1_activ = sigmoid(self.bias_visiblie + T.dot(D, self.W))
h1_sample = h1_activ > rnds.uniform((n_samples, self.n_hidden ))
# h2_sample use the intermediate result h1_sample.
h2_sample = h1_sample * 2
f_h1_sample = theano.function(
inputs=[D],
outputs=[h1_sample, h2_sample],
)
h2_smaple是使用h1_sample的最终结果。
您还可以保存中间结果,并将其用作另一个theano.function
的输入。
不同的theano.function
s对应于不同的计算图。我认为不同的计算图之间不能共享计算。