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
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
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
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
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
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
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))
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