def build_nature_network(input_width, input_height, output_dim, num_frames, batch_size, human_net, input_var): """ Build a large network consistent with the DeepMind Nature paper. """ from lasagne.layers import cuda_convnet l_in = None if human_net: l_in = lasagne.layers.InputLayer(shape=(None, num_frames, input_width, input_height), input_var=input_var) else: l_in = lasagne.layers.InputLayer(shape=(None, num_frames, input_width, input_height)) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(8, 8), stride=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), # Defaults to Glorot b=lasagne.init.Constant(.1), dimshuffle=True) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=64, filter_size=(4, 4), stride=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), dimshuffle=True) l_conv3 = cuda_convnet.Conv2DCCLayer( l_conv2, num_filters=64, filter_size=(3, 3), stride=(1, 1), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), dimshuffle=True) l_hidden1 = lasagne.layers.DenseLayer( l_conv3, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_out = lasagne.layers.DenseLayer(l_hidden1, num_units=output_dim, nonlinearity=None, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) return l_out
def build_nips_network(input_width, input_height, output_dim, num_frames, batch_size, human_net, input_var): """ Build a network consistent with the 2013 NIPS paper. """ from lasagne.layers import cuda_convnet l_in = None if human_net: l_in = lasagne.layers.InputLayer(shape=(None, num_frames, input_width, input_height), input_var=input_var) else: l_in = lasagne.layers.InputLayer(shape=(None, num_frames, input_width, input_height)) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=16, filter_size=(8, 8), stride=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(c01b=True), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=32, filter_size=(4, 4), stride=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(c01b=True), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True) l_hidden1 = lasagne.layers.DenseLayer( l_conv2, num_units=256, nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1)) l_out = lasagne.layers.DenseLayer( l_hidden1, num_units=output_dim, nonlinearity=None, #W=lasagne.init.HeUniform(), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1)) return l_out
def build_network(self, input_width, input_height, output_dim, num_frames, batch_size): l_in = lasagne.layers.InputLayer(shape=(batch_size, num_frames, input_width, input_height)) l_in = cuda_convnet.bc01_to_c01b(l_in) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(8, 8), strides=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(0.01), b=lasagne.init.Constant(0.1), dimshuffle=False) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=64, filter_size=(4, 4), strides=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(0.01), b=lasagne.init.Constant(0.1), dimshuffle=False) l_conv3 = cuda_convnet.Conv2DCCLayer( l_conv2, num_filters=64, filter_size=(3, 3), strides=(1, 1), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(0.01), b=lasagne.init.Constant(0.1)) l_conv3 = cuda_convnet.c01b_to_bc01(l_conv3) l_hidden1 = lasagne.layers.DenseLayer( l_conv3, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(0.01), b=lasagne.init.Constant(0.1)) l_out = lasagne.layers.DenseLayer(l_hidden1, num_units=output_dim, nonlinearity=None, W=lasagne.init.Uniform(0.01), b=lasagne.init.Constant(0.1)) return l_out
def build_nips_network(self, input_width, input_height, output_dim, num_frames, batch_size): """ Build a network consistent with the 2013 NIPS paper. """ # value of None in shape means that it is not fixed at compile time from lasagne.layers import cuda_convnet l_in = lasagne.layers.InputLayer( # shape=(batch_size, num_frames, input_width, input_height) shape=(None, num_frames, input_width, input_height)) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=16, filter_size=(8, 8), stride=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(c01b=True), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=32, filter_size=(4, 4), stride=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(c01b=True), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True) l_hidden1 = lasagne.layers.DenseLayer( l_conv2, num_units=256, nonlinearity=lasagne.nonlinearities.rectify, #W=lasagne.init.HeUniform(), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1)) l_out = lasagne.layers.DenseLayer( l_hidden1, num_units=output_dim, nonlinearity=None, #W=lasagne.init.HeUniform(), W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1)) return l_out
def build_nips_network(self, input_width, input_height, output_dim, num_frames, batch_size): """ Build a network based on google atari deep learning paper """ from lasagne.layers import cuda_convnet l_in = lasagne.layers.InputLayer( shape=(batch_size, num_frames, input_width, input_height) ) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, #previous layer num_filters=16, #16 8x8 filters filter_size=(8, 8), stride=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, #convolution layer # W is the weights and b is bias term W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True ) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, #previous layer num_filters=32, #32 4x4 filters filter_size=(4, 4), stride=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, #convolution layer W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1), dimshuffle=True ) l_hidden1 = lasagne.layers.DenseLayer( l_conv2, #previous layer num_units=256, #256 hidden units nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1) ) l_out = lasagne.layers.DenseLayer( l_hidden1, num_units=output_dim, nonlinearity=None, W=lasagne.init.Normal(.01), b=lasagne.init.Constant(.1) ) return l_out
def build_network(): l_in = lasagne.layers.InputLayer(shape=(None, 8, GRIDSIZE * 2, ARRAYWIDTH * 2)) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(6, 6), stride=(1, 1), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), ) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=64, filter_size=(2, 2), stride=(1, 1), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), ) l_hidden1 = lasagne.layers.DenseLayer( l_conv2, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_hidden2 = lasagne.layers.DenseLayer( l_hidden1, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_out = lasagne.layers.DenseLayer(l_hidden2, num_units=NUMBEROFACTIONS, nonlinearity=None, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) return l_out
def build_model(input_width, input_height, output_dim, batch_size=BATCH_SIZE, dimshuffle=True): l_in = lasagne.layers.InputLayer( shape=(batch_size, 1, input_width, input_height), ) if not dimshuffle: l_in = cuda_convnet.bc01_to_c01b(l_in) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(5, 5), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(), dimshuffle=dimshuffle, ) l_pool1 = cuda_convnet.MaxPool2DCCLayer( l_conv1, ds=(2, 2), dimshuffle=dimshuffle, ) l_conv2 = cuda_convnet.Conv2DCCLayer( l_pool1, num_filters=32, filter_size=(5, 5), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(), dimshuffle=dimshuffle, ) l_pool2 = cuda_convnet.MaxPool2DCCLayer( l_conv2, ds=(2, 2), dimshuffle=dimshuffle, ) if not dimshuffle: l_pool2 = cuda_convnet.c01b_to_bc01(l_pool2) l_hidden1 = lasagne.layers.DenseLayer( l_pool2, num_units=256, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.Uniform(), ) l_hidden1_dropout = lasagne.layers.DropoutLayer(l_hidden1, p=0.5) # l_hidden2 = lasagne.layers.DenseLayer( # l_hidden1_dropout, # num_units=256, # nonlinearity=lasagne.nonlinearities.rectify, # ) # l_hidden2_dropout = lasagne.layers.DropoutLayer(l_hidden2, p=0.5) l_out = lasagne.layers.DenseLayer( l_hidden1_dropout, num_units=output_dim, nonlinearity=lasagne.nonlinearities.softmax, W=lasagne.init.Uniform(), ) return l_out
def build_model(input_width=96, input_height=96, output_dim=1, batch_size=64, dimshuffle=True): l_in = lasagne.layers.InputLayer(shape=(batch_size, 3, input_width, input_height), ) if not dimshuffle: l_in = cuda_convnet.bc01_to_c01b(l_in) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(3, 3), nonlinearity=lasagne.nonlinearities.rectify, dimshuffle=dimshuffle, ) l_pool1 = cuda_convnet.MaxPool2DCCLayer( l_conv1, pool_size=(2, 2), dimshuffle=dimshuffle, ) l_conv2 = cuda_convnet.Conv2DCCLayer( l_pool1, num_filters=64, filter_size=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, dimshuffle=dimshuffle, ) l_pool2 = cuda_convnet.MaxPool2DCCLayer( l_conv2, pool_size=(2, 2), dimshuffle=dimshuffle, ) l_conv3 = cuda_convnet.Conv2DCCLayer( l_pool2, num_filters=128, filter_size=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, dimshuffle=dimshuffle, ) l_pool3 = cuda_convnet.MaxPool2DCCLayer( l_conv3, pool_size=(2, 2), dimshuffle=dimshuffle, ) if not dimshuffle: l_poo3 = cuda_convnet.c01b_to_bc01(l_pool3) l_hidden1 = lasagne.layers.DenseLayer( l_pool3, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, ) l_hidden1_dropout = lasagne.layers.DropoutLayer(l_hidden1, p=0.5) l_hidden2 = lasagne.layers.DenseLayer( l_hidden1_dropout, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, ) l_hidden2_dropout = lasagne.layers.DropoutLayer(l_hidden2, p=0.5) l_out = lasagne.layers.DenseLayer( l_hidden2_dropout, num_units=output_dim, nonlinearity=lasagne.nonlinearities.linear, ) return l_out
def build_large_network(self, input_width, input_height, output_dim, num_frames, batch_size): """ Build a large network consistent with the DeepMind Nature paper. """ from lasagne.layers import cuda_convnet l_in = lasagne.layers.InputLayer(shape=(batch_size, num_frames, input_width, input_height)) l_conv1 = cuda_convnet.Conv2DCCLayer( l_in, num_filters=32, filter_size=(8, 8), stride=(4, 4), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), # Defaults to Glorot b=lasagne.init.Constant(.1), dimshuffle=True) l_conv2 = cuda_convnet.Conv2DCCLayer( l_conv1, num_filters=64, filter_size=(4, 4), stride=(2, 2), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), dimshuffle=True) l_conv3 = cuda_convnet.Conv2DCCLayer( l_conv2, num_filters=64, filter_size=(3, 3), stride=(1, 1), nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1), dimshuffle=True) l_hidden1 = lasagne.layers.DenseLayer( l_conv3, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_out = lasagne.layers.DenseLayer(l_hidden1, num_units=output_dim, nonlinearity=None, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) # compressor l_dropout = lasagne.layers.DropoutLayer( l_conv3, p=0.3, ) l_compress_1 = lasagne.layers.DenseLayer( l_dropout, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_compress_2 = lasagne.layers.DenseLayer( l_compress_1, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_representation = lasagne.layers.DenseLayer( l_compress_2, num_units=256, nonlinearity=None, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_uncompress_1 = lasagne.layers.DenseLayer( l_representation, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) l_uncompress_2 = lasagne.layers.DenseLayer( l_uncompress_1, num_units=512, nonlinearity=lasagne.nonlinearities.rectify, W=lasagne.init.HeUniform(), b=lasagne.init.Constant(.1)) return l_out, l_conv3, l_uncompress_2