|  |  | @@ -5,7 +5,8 @@ from icosagon.trainprep import PreparedData, \ | 
		
	
		
			
			|  |  |  | PreparedRelationFamily, \ | 
		
	
		
			
			|  |  |  | PreparedRelationType, \ | 
		
	
		
			
			|  |  |  | TrainValTest, \ | 
		
	
		
			
			|  |  |  | norm_adj_mat_one_node_type | 
		
	
		
			
			|  |  |  | norm_adj_mat_one_node_type, \ | 
		
	
		
			
			|  |  |  | prepare_training | 
		
	
		
			
			|  |  |  | import torch | 
		
	
		
			
			|  |  |  | from icosagon.input import OneHotInputLayer | 
		
	
		
			
			|  |  |  | from icosagon.convlayer import DecagonLayer | 
		
	
	
		
			
				|  |  | @@ -26,11 +27,12 @@ def test_model_01(): | 
		
	
		
			
			|  |  |  | fam = d.add_relation_family('Dummy-Dummy', 0, 0, False) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel', torch.rand(10, 10).round()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(.8, .1, .1)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert m.data == d | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert m.prep_d == prep_d | 
		
	
		
			
			|  |  |  | assert m.layer_dimensions == [32, 64] | 
		
	
		
			
			|  |  |  | assert (m.ratios.train, m.ratios.val, m.ratios.test) == (.8, .1, .1) | 
		
	
		
			
			|  |  |  | assert m.keep_prob == 1. | 
		
	
		
			
			|  |  |  | assert _is_identity_function(m.rel_activation) | 
		
	
		
			
			|  |  |  | assert m.layer_activation == torch.nn.functional.relu | 
		
	
	
		
			
				|  |  | @@ -38,7 +40,6 @@ def test_model_01(): | 
		
	
		
			
			|  |  |  | assert m.lr == 0.001 | 
		
	
		
			
			|  |  |  | assert m.loss == torch.nn.functional.binary_cross_entropy_with_logits | 
		
	
		
			
			|  |  |  | assert m.batch_size == 100 | 
		
	
		
			
			|  |  |  | assert isinstance(m.prep_d, PreparedData) | 
		
	
		
			
			|  |  |  | assert isinstance(m.seq, torch.nn.Sequential) | 
		
	
		
			
			|  |  |  | assert isinstance(m.opt, torch.optim.Optimizer) | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
				|  |  | @@ -50,7 +51,9 @@ def test_model_02(): | 
		
	
		
			
			|  |  |  | mat = torch.rand(10, 10).round().to_sparse() | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel', mat) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert isinstance(m.prep_d, PreparedData) | 
		
	
		
			
			|  |  |  | assert isinstance(m.prep_d.relation_families, list) | 
		
	
	
		
			
				|  |  | @@ -76,7 +79,9 @@ def test_model_03(): | 
		
	
		
			
			|  |  |  | mat = torch.rand(10, 10).round().to_sparse() | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel', mat) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | state_dict = m.opt.state_dict() | 
		
	
		
			
			|  |  |  | assert isinstance(state_dict, dict) | 
		
	
	
		
			
				|  |  | @@ -97,7 +102,9 @@ def test_model_04(): | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 1', mat) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 2', mat.clone()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[0].parameters())) == 1 | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[1].parameters())) == 2 | 
		
	
	
		
			
				|  |  | @@ -119,7 +126,9 @@ def test_model_05(): | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 2-1', mat) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 2-2', mat.clone()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[0].parameters())) == 1 | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[1].parameters())) == 4 | 
		
	
	
		
			
				|  |  | @@ -127,7 +136,7 @@ def test_model_05(): | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[3].parameters())) == 6 | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | def test_model_05(): | 
		
	
		
			
			|  |  |  | def test_model_06(): | 
		
	
		
			
			|  |  |  | d = Data() | 
		
	
		
			
			|  |  |  | d.add_node_type('Dummy', 10) | 
		
	
		
			
			|  |  |  | d.add_node_type('Foobar', 20) | 
		
	
	
		
			
				|  |  | @@ -142,7 +151,9 @@ def test_model_05(): | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 2-1', mat) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel 2-2', mat.clone()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(1., 0., 0.)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[0].parameters())) == 2 | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[1].parameters())) == 6 | 
		
	
	
		
			
				|  |  | @@ -150,49 +161,53 @@ def test_model_05(): | 
		
	
		
			
			|  |  |  | assert len(list(m.seq[3].parameters())) == 6 | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | def test_model_06(): | 
		
	
		
			
			|  |  |  | def test_model_07(): | 
		
	
		
			
			|  |  |  | d = Data() | 
		
	
		
			
			|  |  |  | d.add_node_type('Dummy', 10) | 
		
	
		
			
			|  |  |  | fam = d.add_relation_family('Dummy-Dummy', 0, 0, False) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel', torch.rand(10, 10).round()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(.8, .1, .1)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(1) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, layer_dimensions=1) | 
		
	
		
			
			|  |  |  | m = Model(prep_d, layer_dimensions=1) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, ratios=1) | 
		
	
		
			
			|  |  |  | m = Model(prep_d, ratios=1) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(ValueError): | 
		
	
		
			
			|  |  |  | m = Model(d, keep_prob='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, keep_prob='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, rel_activation='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, rel_activation='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, layer_activation='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, layer_activation='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, dec_activation='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, dec_activation='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(ValueError): | 
		
	
		
			
			|  |  |  | m = Model(d, lr='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, lr='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(TypeError): | 
		
	
		
			
			|  |  |  | m = Model(d, loss=1) | 
		
	
		
			
			|  |  |  | m = Model(prep_d, loss=1) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | with pytest.raises(ValueError): | 
		
	
		
			
			|  |  |  | m = Model(d, batch_size='x') | 
		
	
		
			
			|  |  |  | m = Model(prep_d, batch_size='x') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | def test_model_07(): | 
		
	
		
			
			|  |  |  | def test_model_08(): | 
		
	
		
			
			|  |  |  | d = Data() | 
		
	
		
			
			|  |  |  | d.add_node_type('Dummy', 10) | 
		
	
		
			
			|  |  |  | fam = d.add_relation_family('Dummy-Dummy', 0, 0, False) | 
		
	
		
			
			|  |  |  | fam.add_relation_type('Dummy Rel', torch.rand(10, 10).round()) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(d) | 
		
	
		
			
			|  |  |  | prep_d = prepare_training(d, TrainValTest(.8, .1, .1)) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m = Model(prep_d) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | m.run_epoch() |