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

Class ValueModel

rl2/cartpole/pg_tf.py:119–159  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117
118# approximates V(s)
119class ValueModel:
120 def __init__(self, D, hidden_layer_sizes):
121 # create the graph
122 self.layers = []
123 M1 = D
124 for M2 in hidden_layer_sizes:
125 layer = HiddenLayer(M1, M2)
126 self.layers.append(layer)
127 M1 = M2
128
129 # final layer
130 layer = HiddenLayer(M1, 1, lambda x: x)
131 self.layers.append(layer)
132
133 # inputs and targets
134 self.X = tf.placeholder(tf.float32, shape=(None, D), name='X')
135 self.Y = tf.placeholder(tf.float32, shape=(None,), name='Y')
136
137 # calculate output and cost
138 Z = self.X
139 for layer in self.layers:
140 Z = layer.forward(Z)
141 Y_hat = tf.reshape(Z, [-1]) # the output
142 self.predict_op = Y_hat
143
144 cost = tf.reduce_sum(tf.square(self.Y - Y_hat))
145 # self.train_op = tf.train.AdamOptimizer(1e-2).minimize(cost)
146 # self.train_op = tf.train.MomentumOptimizer(1e-2, momentum=0.9).minimize(cost)
147 self.train_op = tf.train.GradientDescentOptimizer(1e-4).minimize(cost)
148
149 def set_session(self, session):
150 self.session = session
151
152 def partial_fit(self, X, Y):
153 X = np.atleast_2d(X)
154 Y = np.atleast_1d(Y)
155 self.session.run(self.train_op, feed_dict={self.X: X, self.Y: Y})
156
157 def predict(self, X):
158 X = np.atleast_2d(X)
159 return self.session.run(self.predict_op, feed_dict={self.X: X})
160
161
162def play_one_td(env, pmodel, vmodel, gamma):

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected