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

Method __init__

rl2/atari/dqn_theano.py:224–300  ·  view source on GitHub ↗
(self, K, conv_layer_sizes, hidden_layer_sizes)

Source from the content-addressed store, hash-verified

222
223class DQN:
224 def __init__(self, K, conv_layer_sizes, hidden_layer_sizes):
225 self.K = K
226
227 # inputs and targets
228 X = T.ftensor4('X')
229 G = T.fvector('G')
230 actions = T.ivector('actions')
231
232 # create the graph
233 self.conv_layers = []
234 num_input_filters = 4 # number of filters / color channels
235 current_size = IM_SIZE
236 for num_output_filters, filtersz, stride in conv_layer_sizes:
237 ### not using this currently, it didn't make a difference ###
238 # cut = None
239 # if filtersz % 2 == 0: # if even
240 # cut = (current_size + stride - 1) // stride
241 layer = ConvLayer(num_input_filters, num_output_filters, filtersz, stride)
242 current_size = (current_size + stride - 1) // stride
243 # print("current_size:", current_size)
244 self.conv_layers.append(layer)
245 num_input_filters = num_output_filters
246
247 # get conv output size
248 Z = X / 255.0
249 for layer in self.conv_layers:
250 Z = layer.forward(Z)
251 conv_out = Z.flatten(ndim=2)
252 conv_out_op = theano.function(inputs=[X], outputs=conv_out, allow_input_downcast=True)
253 test = conv_out_op(np.random.randn(1, 4, IM_SIZE, IM_SIZE))
254 flattened_ouput_size = test.shape[1]
255
256
257 # build fully connected layers
258 self.layers = []
259 M1 = flattened_ouput_size
260 print("flattened_ouput_size:", flattened_ouput_size)
261 for M2 in hidden_layer_sizes:
262 layer = HiddenLayer(M1, M2)
263 self.layers.append(layer)
264 M1 = M2
265
266 # final layer
267 layer = HiddenLayer(M1, K, lambda x: x)
268 self.layers.append(layer)
269
270 # collect params for copy
271 self.params = []
272 for layer in (self.conv_layers + self.layers):
273 self.params += layer.params
274
275
276 # calculate final output and cost
277 Z = conv_out
278 for layer in self.layers:
279 Z = layer.forward(Z)
280 Y_hat = Z
281

Callers

nothing calls this directly

Calls 4

forwardMethod · 0.95
ConvLayerClass · 0.70
HiddenLayerClass · 0.70
adamFunction · 0.70

Tested by

no test coverage detected