def net(): net = cn.Network(name='my tikz test network', directed=True) net.add_edges_from([('ab', 'a', 'b'), ('ac', 'a', 'c'), ('cd', 'c', 'd'), ('de', 'd', 'e'), ('ec', 'e', 'c'), ('cf', 'c', 'f'), ('fa', 'f', 'a'), ('fg', 'f', 'g'), ('gd', 'g', 'd'), ('gg', 'g', 'g')]) net.edges['ab']['force'] = 3 net.edges['ac']['force'] = 2 net.edges['cd']['force'] = 1 net.edges['de']['force'] = 1 net.edges['ec']['force'] = 3 net.edges['cf']['force'] = 1 net.edges['fa']['force'] = 1 net.edges['fg']['force'] = 1 net.edges['gd']['force'] = 1 net.edges['gg']['force'] = 1 net.nodes['name'] = [ 'Alice', 'Bob', 'Claire', 'Dennis', 'Esther', 'Frank', 'George' ] net.nodes['age'] = [25, 31, 18, 47, 22, 23, 50] net.nodes['gender'] = ['f', 'm', 'f', 'm', 'f', 'm', 'm'] net.edges['is_formal'] = [ False, False, True, True, True, False, True, False, False, False ] return net
def net_2(): net = cn.Network(name='my tikz test network number 2', directed=True) net.add_edges_from([('uv', 'u', 'v'), ('vw', 'v', 'w')]) return net
def net_1(): net = cn.Network(name='my tikz test network number 1', directed=True) net.add_edges_from([('ab', 'a', 'b'), ('bc', 'b', 'c')]) return net
del train, train_label train_data, valid_data = shared((X, y)), shared((Xval, yval)) del X, Xval ## Training # Experiment 1: sigmoid num_epochs = 60 mini_batch_size = 10 eta = 0.1 net = cn.Network([ cn.ConvPoolLayer(image_shape=(1, 28, 28), filter_shape=(20, 1, 5, 5), poolsize=(2, 2)), cn.ConvPoolLayer(image_shape=(20, 12, 12), filter_shape=(40, 20, 5, 5), poolsize=(2, 2)), cn.FullyConnectedLayer(n_in=40*4*4, n_out=100), cn.SoftmaxLayer(n_in=100, n_out=10)]) t0 = time() net.fit(train_data, num_epochs, mini_batch_size, eta, valid_data, early_stop=True) time() - t0 # 99.79% train accu, 98.87% val accu, 98.94% test accu # Experiment 2: relu num_epochs = 20 mini_batch_size = 16 eta = 0.05 net = cn.Network([ cn.ConvPoolLayer(image_shape=(1, 28, 28),
def main(): # Network # ------- net = cn.Network(name='my tikz test network', directed=True) net.add_edges_from([('ab', 'a', 'b'), ('ac', 'a', 'c'), ('cd', 'c', 'd'), ('de', 'd', 'e'), ('ec', 'e', 'c'), ('cf', 'c', 'f'), ('fa', 'f', 'a'), ('fg', 'f', 'g'), ('gd', 'g', 'd'), ('gg', 'g', 'g')]) # Network attributes # ------------------ net.nodes['name'] = [ 'Alice', 'Bob', 'Claire', 'Dennis', 'Esther', 'Frank', 'George' ] net.nodes['age'] = [25, 31, 18, 47, 22, 23, 50] net.nodes['gender'] = ['f', 'm', 'f', 'm', 'f', 'm', 'm'] net.edges['is_formal'] = [ False, False, True, True, True, False, True, False, False, False ] # Network dicts # ------------- color_dict = {"m": "blue", "f": "red"} shape_dict = {"m": "circle", "f": "rectangle"} style_dict = {"m": "{shading=ball}", "f": None} layout = { 'a': (4.3191, -3.5352), 'b': (0.5292, -0.5292), 'c': (8.6559, -3.8008), 'd': (12.4117, -7.5239), 'e': (12.7, -1.7069), 'f': (6.0022, -9.0323), 'g': (9.7608, -12.7) } # Visual style dict # ----------------- visual_style = {} # node styles # ----------- visual_style['node_size'] = 5 visual_style['node_color'] = [color_dict[g] for g in net.nodes('gender')] visual_style['node_opacity'] = .7 visual_style['node_label'] = net.nodes['name'] visual_style['node_label_position'] = 'below' visual_style['node_label_distance'] = 15 visual_style['node_label_color'] = 'gray' visual_style['node_label_size'] = 3 visual_style['node_shape'] = [shape_dict[g] for g in net.nodes('gender')] visual_style['node_style'] = [style_dict[g] for g in net.nodes('gender')] visual_style['node_label_off'] = {'e': True} visual_style['node_math_mode'] = [True] visual_style['node_label_as_id'] = {'f': True} visual_style['node_pseudo'] = {'d': True} # edge styles # ----------- visual_style['edge_width'] = [ .3 + .3 * int(f) for f in net.edges('is_formal') ] visual_style['edge_color'] = 'black' visual_style['edge_opacity'] = .8 visual_style['edge_curved'] = 0.1 visual_style['edge_label'] = [e for e in net.edges] visual_style['edge_label_position'] = 'above' visual_style['edge_label_distance'] = .6 visual_style['edge_label_color'] = 'gray' visual_style['edge_label_size'] = {'ac': 5} visual_style['edge_style'] = 'dashed' visual_style['edge_arrow_size'] = .2 visual_style['edge_arrow_width'] = .2 visual_style['edge_loop_size'] = 15 visual_style['edge_loop_position'] = 90 visual_style['edge_loop_shape'] = 45 visual_style['edge_directed'] = [ True, True, False, True, True, False, True, True, True, True ] visual_style['edge_label'][1] = '\\frac{\\alpha}{\\beta}' visual_style['edge_math_mode'] = {'ac': True} visual_style['edge_not_in_bg'] = {'fa': True} # general options # --------------- visual_style['unit'] = 'mm' visual_style['layout'] = layout visual_style["margin"] = {'top': 5, 'bottom': 8, 'left': 5, 'right': 5} visual_style["canvas"] = (100, 60) visual_style['keep_aspect_ratio'] = False # Create a latex file plot(net, 'network.tex', **visual_style)