def test_normal_flow(self): """Test a BiFlow with normal nodes.""" flow = BiFlow([mdp.nodes.SFANode(output_dim=5), mdp.nodes.PolynomialExpansionNode(degree=3), mdp.nodes.SFANode(output_dim=20)]) data_iterables = [[np.random.random((20,10)) for _ in range(6)], None, [np.random.random((20,10)) for _ in range(6)]] flow.train(data_iterables) x = np.random.random([100,10]) flow.execute(x)
def test_normal_flow(self): """Test a BiFlow with normal nodes.""" flow = BiFlow([ mdp.nodes.SFANode(output_dim=5), mdp.nodes.PolynomialExpansionNode(degree=3), mdp.nodes.SFANode(output_dim=20) ]) data_iterables = [[np.random.random((20, 10)) for _ in range(6)], None, [np.random.random((20, 10)) for _ in range(6)]] flow.train(data_iterables) x = np.random.random([100, 10]) flow.execute(x)
def test_normal_multiphase(self): """Test training and execution with multiple training phases. The node with multiple training phases is a hinet.FlowNode. """ sfa_node = mdp.nodes.SFANode(input_dim=10, output_dim=8) sfa2_node = mdp.nodes.SFA2Node(input_dim=8, output_dim=6) flownode = mdp.hinet.FlowNode(mdp.Flow([sfa_node, sfa2_node])) flow = BiFlow([flownode, mdp.nodes.PolynomialExpansionNode(degree=2), mdp.nodes.SFANode(output_dim=5)]) data_iterables = [[np.random.random((30,10)) for _ in range(6)], None, [np.random.random((30,10)) for _ in range(6)]] flow.train(data_iterables) x = np.random.random([100,10]) flow.execute(x)
def test_normal_multiphase(self): """Test training and execution with multiple training phases. The node with multiple training phases is a hinet.FlowNode. """ sfa_node = mdp.nodes.SFANode(input_dim=10, output_dim=8) sfa2_node = mdp.nodes.SFA2Node(input_dim=8, output_dim=6) flownode = mdp.hinet.FlowNode(mdp.Flow([sfa_node, sfa2_node])) flow = BiFlow([ flownode, mdp.nodes.PolynomialExpansionNode(degree=2), mdp.nodes.SFANode(output_dim=5) ]) data_iterables = [[np.random.random((30, 10)) for _ in range(6)], None, [np.random.random((30, 10)) for _ in range(6)]] flow.train(data_iterables) x = np.random.random([100, 10]) flow.execute(x)
def test_training_targets(self): """Test targeting during training and stop_training.""" tracelog = [] verbose = False node1 = TraceJumpBiNode( output_dim=1, tracelog=tracelog, node_id="node_1", train_results=[[None]], stop_train_results=[None], execute_results=[None, (None, {"b": 2}, "node_3"), (None, {"b": 2}, EXIT_TARGET),], verbose=verbose) node2 = TraceJumpBiNode( output_dim=1, tracelog=tracelog, node_id="node_2", train_results=[[None]], stop_train_results=[(None, {"b": 2}, "node_1")], execute_results=[None, (None, None, "node_1"), (None, None, "node_1")], verbose=verbose) node3 = TraceJumpBiNode( output_dim=1, tracelog=tracelog, node_id="node_3", train_results=[[(None, {"a": 1}, "node_2"), None]], stop_train_results=[(None, {"a": 1}, "node_2")], execute_results=[(None, {"b": 2}, EXIT_TARGET)], verbose=verbose) biflow = BiFlow([node1, node2, node3]) data_iterables = [[np.random.random((1,1)) for _ in range(2)], [np.random.random((1,1)) for _ in range(2)], [np.random.random((1,1)) for _ in range(2)]] biflow.train(data_iterables) # print ",\n".join(str(log) for log in tracelog) # tracelog reference reference = [ ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'stop_training'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_2', 'stop_training'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'execute'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'train'), ('node_2', 'execute'), ('node_1', 'execute'), ('node_3', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'train'), ('node_2', 'execute'), ('node_1', 'execute'), ('node_3', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_3', 'stop_training'), ('node_2', 'execute'), ('node_3', 'execute'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset') ] assert tracelog == reference
def test_fda_binode(self): """Test using the FDABiNode in a BiFlow.""" samples = mdp.numx_rand.random((100,10)) labels = mdp.numx.arange(100) flow = BiFlow([mdp.nodes.PCANode(), nodes.FDABiNode()]) flow.train([[samples],[samples]], [None,[{"labels": labels}]])
def test_training_targets(self): """Test targeting during training and stop_training.""" tracelog = [] verbose = False node1 = TraceJumpBiNode(output_dim=1, tracelog=tracelog, node_id="node_1", train_results=[[None]], stop_train_results=[None], execute_results=[ None, (None, { "b": 2 }, "node_3"), (None, { "b": 2 }, EXIT_TARGET), ], verbose=verbose) node2 = TraceJumpBiNode(output_dim=1, tracelog=tracelog, node_id="node_2", train_results=[[None]], stop_train_results=[(None, { "b": 2 }, "node_1")], execute_results=[ None, (None, None, "node_1"), (None, None, "node_1") ], verbose=verbose) node3 = TraceJumpBiNode(output_dim=1, tracelog=tracelog, node_id="node_3", train_results=[[(None, { "a": 1 }, "node_2"), None]], stop_train_results=[(None, { "a": 1 }, "node_2")], execute_results=[(None, { "b": 2 }, EXIT_TARGET)], verbose=verbose) biflow = BiFlow([node1, node2, node3]) data_iterables = [[np.random.random((1, 1)) for _ in range(2)], [np.random.random((1, 1)) for _ in range(2)], [np.random.random((1, 1)) for _ in range(2)]] biflow.train(data_iterables) # print ",\n".join(str(log) for log in tracelog) # tracelog reference reference = [('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'stop_training'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_2', 'stop_training'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'execute'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'train'), ('node_2', 'execute'), ('node_1', 'execute'), ('node_3', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_1', 'execute'), ('node_2', 'execute'), ('node_3', 'train'), ('node_2', 'execute'), ('node_1', 'execute'), ('node_3', 'train'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset'), ('node_3', 'stop_training'), ('node_2', 'execute'), ('node_3', 'execute'), ('node_1', 'bi_reset'), ('node_2', 'bi_reset'), ('node_3', 'bi_reset')] assert tracelog == reference
def test_fda_binode(self): """Test using the FDABiNode in a BiFlow.""" samples = mdp.numx_rand.random((100, 10)) labels = mdp.numx.arange(100) flow = BiFlow([mdp.nodes.PCANode(), nodes.FDABiNode()]) flow.train([[samples], [samples]], [None, [{"labels": labels}]])