现在我们用 PyTorch 来定义上文在 Keras 上训练的模型:
class Net(torch.nn.Module): def __init__(self, n_feature, n_hidden): super(Net, self).__init__() self.hidden = torch.nn.Linear(n_feature, n_hidden) # hidden layer self.predict = torch.nn.Linear(n_hidden, 1) # output layer def forward(self, x): x = self.hidden(x) x = self.predict(x) return x
相比于贝叶斯回归模型,我们现在有两个参数集(从输入层到隐藏层的参数和隐藏层到输出层的参数),所以我们需要对分布和先验知识稍加改动,以适应我们的模型:
priors = {'hidden.weight': w_prior,
'hidden.bias': b_prior,
'predict.weight': w_prior2,
'predict.bias': b_prior2}
以及 guide 部分:
dists = {'hidden.weight': w_dist,
'hidden.bias': b_dist,
'predict.weight': w_dist2,
'predict.bias': b_dist2}
请不要忘记为模型中的每一个分布起一个不同的名字,因为模型中不应存在任何歧义和重复。更多代码细节请参见源代码:https://github.com/Rachnog/Deep-Trading/tree/master/bayesian
训练之后,让我们看看最后的结果:

使用 Pyro 神经网络进行为期 30 天的预测
它看起来比之前的结果都好得多!
比起常规贝叶斯模型,考虑到贝叶斯模型所中习得的权重特征或正则化,我还希望看到权重的数据。我按照以下方法查看 Pyro 模型的参数:
for name in pyro.get_param_store().get_all_param_names(): print name, pyro.param(name).data.numpy()
这是我在 Keras 模型中所写的代码:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70150-5.html
用铁的事实证明了制定建造出众多鬼城的决策是多么的高瞻远瞩
且有最新式速射炮
不过