def _apply_config(self, neural_net):
        """
        This function actually does the work.

        """

        if not isinstance(neural_net, NeuralNet):
            raise ValueError("neural_net must be of the NeuralNet class.")
        for snode in self.get_source_nodes(neural_net):
            prev_copy_node = None
            for level in xrange(self.copy_levels):
                copy_node = CopyNode()
                if level == 0:
                    copy_node.set_source_node(snode)
                else:
                    copy_node.set_source_node(prev_copy_node)

                copy_node.source_update_config(self.source_type,
                                               self.incoming_weight,
                                               self.existing_weight)

                copy_node.set_activation_type(self.activation_type)

                if self.connection_type == 'm':
                    self._fully_connect(copy_node,
                                        self.get_upper_nodes(neural_net))
                elif self.connection_type == 's':
                    copy_node.add_input_connection(Connection(
                        copy_node, snode))
                else:
                    raise ValueError("Invalid connection_type")

                neural_net.layers[self.copy_nodes_layer].add_node(copy_node)
                prev_copy_node = copy_node
Exemplo n.º 2
0
    def add_nodes(self, number_nodes, node_type, activation_type=None):
        """
        This function adds nodes in bulk for initialization.

        If an optional activation type is passed through, that will be set for
        the nodes.  Otherwise, the default activation type for the layer will
        be used.

        """

        count = 0
        while count < number_nodes:
            if node_type == 'copy':
                node = CopyNode()
            else:
                node = Node(node_type)

            if activation_type:
                node.set_activation_type(activation_type)

            self.add_node(node)
            count += 1
    def _apply_config(self, neural_net):
        """
        This function actually does the work.

        """

        if not isinstance(neural_net, NeuralNet):
            raise ValueError("neural_net must be of the NeuralNet class.")
        for snode in self.get_source_nodes(neural_net):
            prev_copy_node = None
            for level in xrange(self.copy_levels):
                copy_node = CopyNode()
                if level == 0:
                    copy_node.set_source_node(snode)
                else:
                    copy_node.set_source_node(prev_copy_node)

                copy_node.source_update_config(
                    self.source_type,
                    self.incoming_weight,
                    self.existing_weight)

                copy_node.set_activation_type(self.activation_type)

                if self.connection_type == 'm':
                    self._fully_connect(
                        copy_node,
                        self.get_upper_nodes(neural_net))
                elif self.connection_type == 's':
                    copy_node.add_input_connection(
                        Connection(copy_node, snode))
                else:
                    raise ValueError("Invalid connection_type")

                neural_net.layers[self.copy_nodes_layer].add_node(copy_node)
                prev_copy_node = copy_node