MCPcopy Create free account
hub / github.com/lazyprogrammer/machine_learning_examples / __init__

Method __init__

rl2/mountaincar/pg_theano.py:67–129  ·  view source on GitHub ↗
(self, D, ft, hidden_layer_sizes=[])

Source from the content-addressed store, hash-verified

65# approximates pi(a | s)
66class PolicyModel:
67 def __init__(self, D, ft, hidden_layer_sizes=[]):
68 self.ft = ft
69
70 ##### hidden layers #####
71 M1 = D
72 self.hidden_layers = []
73 for M2 in hidden_layer_sizes:
74 layer = HiddenLayer(M1, M2)
75 self.hidden_layers.append(layer)
76 M1 = M2
77
78 # final layer mean
79 self.mean_layer = HiddenLayer(M1, 1, lambda x: x, use_bias=False, zeros=True)
80
81 # final layer variance
82 self.var_layer = HiddenLayer(M1, 1, T.nnet.softplus, use_bias=False, zeros=False)
83
84 # get all params for gradient later
85 params = self.mean_layer.params + self.var_layer.params
86 for layer in self.hidden_layers:
87 params += layer.params
88
89 # inputs and targets
90 X = T.matrix('X')
91 actions = T.vector('actions')
92 advantages = T.vector('advantages')
93 target_value = T.vector('target_value')
94
95 # get final hidden layer
96 Z = X
97 for layer in self.hidden_layers:
98 Z = layer.forward(Z)
99
100 mean = self.mean_layer.forward(Z).flatten()
101 var = self.var_layer.forward(Z).flatten() + 1e-5 # smoothing
102
103 # can't find Theano log pdf, we will make it
104 def log_pdf(actions, mean, var):
105 k1 = T.log(2*np.pi*var)
106 k2 = (actions - mean)**2 / var
107 return -0.5*(k1 + k2)
108
109 def entropy(var):
110 return 0.5*T.log(2*np.pi*np.e*var)
111
112 log_probs = log_pdf(actions, mean, var)
113 cost = -T.sum(advantages * log_probs + 0.1*entropy(var))
114 updates = adam(cost, params)
115
116 # compile functions
117 self.train_op = theano.function(
118 inputs=[X, actions, advantages],
119 updates=updates,
120 allow_input_downcast=True
121 )
122
123 # alternatively, we could create a RandomStream and sample from
124 # the Gaussian using Theano code

Callers

nothing calls this directly

Calls 4

forwardMethod · 0.95
HiddenLayerClass · 0.70
adamFunction · 0.70
entropyFunction · 0.50

Tested by

no test coverage detected