コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
ファイル: network.py プロジェクト: afcarl/atari
    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
コード例 #4
0
    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
コード例 #5
0
	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
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
    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