コード例 #1
0
def create_cell_mlp(input_nodes):
    """Create a cell with convolution.

    Args:
        input_nodes (list(Node)): a list of input_nodes for this cell.

    Returns:
        Cell: the corresponding cell.
    """
    cell = Cell(input_nodes)

    n1 = ConstantNode(name='N1')
    cell.graph.add_edge(input_nodes[0], n1)  # fixed input connection
    n1.set_op(op=Flatten())

    n2 = VariableNode('N2')
    n2.add_op(Identity())
    n2.add_op(Dense(units=10))
    n2.add_op(Dense(units=50))
    n2.add_op(Dense(units=100))
    n2.add_op(Dense(units=200))
    n2.add_op(Dense(units=250))
    n2.add_op(Dense(units=500))
    n2.add_op(Dense(units=750))
    n2.add_op(Dense(units=1000))

    n3 = VariableNode('N3')
    n3.add_op(Identity())
    n3.add_op(Activation(activation='relu'))
    n3.add_op(Activation(activation='tanh'))
    n3.add_op(Activation(activation='sigmoid'))

    n4 = VariableNode('N4')
    n4.add_op(Identity())
    n4.add_op(Dropout(rate=0.5))
    n4.add_op(Dropout(rate=0.4))
    n4.add_op(Dropout(rate=0.3))
    n4.add_op(Dropout(rate=0.2))
    n4.add_op(Dropout(rate=0.1))
    n4.add_op(Dropout(rate=0.05))

    block = Block()
    block.add_node(n1)
    block.add_node(n2)
    block.add_node(n3)
    block.add_node(n4)
    block.add_edge(n1, n2)
    block.add_edge(n2, n3)
    block.add_edge(n3, n4)

    cell.add_block(block)

    cell.set_outputs()
    return cell
コード例 #2
0
def create_cell_conv(input_nodes):
    """Create a cell with convolution.

    Args:
        input_nodes (list(Node)): a list of input_nodes for this cell.

    Returns:
        Cell: the corresponding cell.
    """
    cell = Cell(input_nodes)

    n1 = VariableNode('N1')
    cell.graph.add_edge(input_nodes[0], n1)  # fixed input connection
    n1.add_op(Identity())
    # n1.add_op(Conv1D(filter_size=2, num_filters=8))
    n1.add_op(Conv1D(filter_size=3, num_filters=8))
    n1.add_op(Conv1D(filter_size=4, num_filters=8))
    n1.add_op(Conv1D(filter_size=5, num_filters=8))
    n1.add_op(Conv1D(filter_size=6, num_filters=8))
    # n1.add_op(Conv1D(filter_size=7, num_filters=8))
    # n1.add_op(Conv1D(filter_size=8, num_filters=8))
    # n1.add_op(Conv1D(filter_size=9, num_filters=8))
    # n1.add_op(Conv1D(filter_size=10, num_filters=8))

    n2 = VariableNode('N2')
    n2.add_op(Identity())
    n2.add_op(Activation(activation='relu'))
    n2.add_op(Activation(activation='tanh'))
    n2.add_op(Activation(activation='sigmoid'))

    n3 = VariableNode('N3')
    n3.add_op(Identity())
    # n3.add_op(MaxPooling1D(pool_size=2, padding='same'))
    n3.add_op(MaxPooling1D(pool_size=3, padding='same'))
    n3.add_op(MaxPooling1D(pool_size=4, padding='same'))
    n3.add_op(MaxPooling1D(pool_size=5, padding='same'))
    n3.add_op(MaxPooling1D(pool_size=6, padding='same'))
    # n3.add_op(MaxPooling1D(pool_size=7, padding='same'))
    # n3.add_op(MaxPooling1D(pool_size=8, padding='same'))
    # n3.add_op(MaxPooling1D(pool_size=9, padding='same'))
    # n3.add_op(MaxPooling1D(pool_size=10, padding='same'))

    block = Block()
    block.add_node(n1)
    block.add_node(n2)
    block.add_node(n3)
    block.add_edge(n1, n2)
    block.add_edge(n2, n3)

    cell.add_block(block)

    cell.set_outputs()
    return cell
コード例 #3
0
ファイル: anl_mlp_1.py プロジェクト: bigwater/nas4candle
    def create_block():
        # first node of block
        n1 = VariableNode('N1')
        for inpt in input_nodes:
            n1.add_op(Connect(cell.graph, inpt, n1))

        # second node of block
        mlp_op_list = list()
        mlp_op_list.append(Identity())
        mlp_op_list.append(Dense(5, tf.nn.relu))
        mlp_op_list.append(Dense(5, tf.nn.tanh))
        mlp_op_list.append(Dense(10, tf.nn.relu))
        mlp_op_list.append(Dense(10, tf.nn.tanh))
        mlp_op_list.append(Dense(20, tf.nn.relu))
        mlp_op_list.append(Dense(20, tf.nn.tanh))
        n2 = VariableNode('N2')
        for op in mlp_op_list:
            n2.add_op(op)

        # third node of block
        n3 = VariableNode('N3')
        for op in dropout_ops:
            n3.add_op(op)

        block = Block()
        block.add_node(n1)
        block.add_node(n2)
        block.add_node(n3)

        block.add_edge(n1, n2)
        block.add_edge(n2, n3)
        return block
コード例 #4
0
ファイル: structure.py プロジェクト: scrlnas2019/nas4candle
    def set_ops(self, indexes):
        """
        Set the operations for each node of each cell of the structure.

        Args:
            indexes (list): element of list can be float in [0, 1] or int.
            output_node (ConstantNode): the output node of the Structure.
        """
        cursor = 0
        for c in self.struct:
            num_nodes = c.num_nodes
            c.set_ops(indexes[cursor:cursor+num_nodes])
            cursor += num_nodes

            self.graph.add_nodes_from(c.graph.nodes())
            self.graph.add_edges_from(c.graph.edges())

        output_nodes = get_output_nodes(self.graph)
        if len(output_nodes) == 1:
            node = ConstantNode(op=Identity(), name='Structure_Output')
            self.graph.add_node(node)
            self.graph.add_edge(output_nodes[0], node)
        else:
            node = ConstantNode(name='Structure_Output')
            node.set_op(self.output_op(self.graph, node, output_nodes))
        self.output_node = node
コード例 #5
0
 def create_conv_node(name):
     n = VariableNode(name)
     n.add_op(Identity())
     n.add_op(Conv1D(filter_size=5, num_filters=2))
     n.add_op(Conv1D(filter_size=5, num_filters=3))
     n.add_op(MaxPooling1D(pool_size=3, padding='same'))
     n.add_op(MaxPooling1D(pool_size=5, padding='same'))
     return n
コード例 #6
0
def create_dense_cell_type2(input_nodes):
    """MLP type 2

    Args:
        input_nodes (list(Node)): possible inputs of the current cell.

    Returns:
        Cell: a Cell instance.
    """
    cell = Cell(input_nodes)

    # first node of block
    n1 = VariableNode('N_0')
    for inpt in input_nodes:
        n1.add_op(Connect(cell.graph, inpt, n1))

    # second node of block
    mlp_op_list = list()
    mlp_op_list.append(Identity())
    mlp_op_list.append(Dense(5, tf.nn.relu))
    mlp_op_list.append(Dense(10, tf.nn.relu))
    mlp_op_list.append(Dense(20, tf.nn.relu))
    mlp_op_list.append(Dense(40, tf.nn.relu))
    mlp_op_list.append(Dense(80, tf.nn.relu))
    mlp_op_list.append(Dense(160, tf.nn.relu))
    mlp_op_list.append(Dense(320, tf.nn.relu))
    n2 = VariableNode('N_1')
    for op in mlp_op_list:
        n2.add_op(op)

    # third
    n3 = VariableNode('N_2')
    drop_ops = []
    drop_ops.extend(dropout_ops)
    for op in drop_ops:
        n3.add_op(op)

    # 1 Blocks
    block1 = Block()
    block1.add_node(n1)
    block1.add_node(n2)
    block1.add_node(n3)

    block1.add_edge(n1, n2)
    block1.add_edge(n2, n3)

    cell.add_block(block1)

    cell.set_outputs()
    return cell
コード例 #7
0
def create_mlp_node(node):
    node.add_op(Identity())
    node.add_op(Dense(100, tf.nn.relu))
    node.add_op(Dense(100, tf.nn.tanh))
    node.add_op(Dense(100, tf.nn.sigmoid))
    node.add_op(Dropout(0.3))
    node.add_op(Dense(500, tf.nn.relu))
    node.add_op(Dense(500, tf.nn.tanh))
    node.add_op(Dense(500, tf.nn.sigmoid))
    node.add_op(Dropout(0.4))
    node.add_op(Dense(1000, tf.nn.relu))
    node.add_op(Dense(1000, tf.nn.tanh))
    node.add_op(Dense(1000, tf.nn.sigmoid))
    node.add_op(Dropout(0.5))
コード例 #8
0
def create_cell_1(input_nodes):
    """Create a cell with convolution.

    Args:
        input_nodes (list(Node)): a list of input_nodes for this cell.

    Returns:
        Cell: the corresponding cell.
    """
    cell = Cell(input_nodes)

    input_dose1 = input_nodes[0]
    input_rnaseq = input_nodes[1]
    input_drug1descriptor = input_nodes[2]
    input_drug1fingerprints = input_nodes[3]

    def create_block_3_nodes(input_node):

        # first node of block
        n1 = VariableNode('N1')
        create_mlp_node(n1)
        cell.graph.add_edge(input_node, n1) # fixed input of current block

        # second node of block
        n2 = VariableNode('N2')
        create_mlp_node(n2)

        # third node of the block
        n3 = VariableNode('N3')
        create_mlp_node(n3)

        block = Block()
        block.add_node(n1)
        block.add_node(n2)
        block.add_node(n3)

        block.add_edge(n1, n2)
        block.add_edge(n2, n3)
        return block, (n1, n2, n3)

    # BLOCK FOR: dose1
    n = ConstantNode(op=Identity(), name='N1', )
    cell.graph.add_edge(input_dose1, n)
    block0 = Block()
    block0.add_node(n)
    cell.add_block(block0)


    # BLOCK FOR: rnaseq
    block3, _ = create_block_3_nodes(input_rnaseq)
    cell.add_block(block3)

    # BLOCK FOR: drug1.descriptor
    block4, _ = create_block_3_nodes(input_drug1descriptor)
    cell.add_block(block4)

    # BLOCK FOR: drug1.fingerprints
    block5, _ = create_block_3_nodes(input_drug1fingerprints)
    cell.add_block(block5)

    # set_cell_output_add(cell)
    cell.set_outputs()
    return cell