mistake :- sp(X, _), sp(Y, _), not reachable(X, Y). ''' opt_con = ''' % [o] 4. Predicted path should contain least edges :~ nn_edge(X). [1, X] ''' ######## # Construct nnMapping, set optimizers, and initialize DeepLPMLN object ######## m = FC(40, 50, 50, 50, 50, 50, 24) nnMapping = {"m":m} optimizers = {'m':torch.optim.Adam(m.parameters(), lr=0.001)} # 1234 # dlpmlnObj = DeepLPMLN(nnRule+aspRule+remove_con+path_con+reach_con+opt_con, nnMapping, optimizers) # 234 dlpmlnObj = DeepLPMLN(nnRule+aspRule+path_con+reach_con+opt_con, nnMapping, optimizers) # 23 # dlpmlnObj = DeepLPMLN(nnRule+aspRule+path_con+reach_con, nnMapping, optimizers) # 2 # dlpmlnObj = DeepLPMLN(nnRule+aspRule+path_con, nnMapping, optimizers) ######## # Start training and testing on a list of different MVPP programs ######## mvppList = [remove_con, path_con, reach_con, remove_con+path_con, remove_con+reach_con, path_con+reach_con, remove_con+path_con+reach_con, remove_con+path_con+reach_con+opt_con]
win :- coin(head), 1{urn1(red); urn2(red)}. loss :- not win. % we make a mistake if 2 predictions violate mistake :- neural_coin(i, 0, HT1), random_coin(i, HT2), HT1!=HT2. mistake :- neural_color(C, 0, C1), random_color(C, C2), C1!=C2. ''' ######## # Define nnMapping and optimizers, initialze DeepLPMLN object ######## model1 = Net() model2 = FC(3, 3) optimizer1 = torch.optim.Adam(model1.parameters(), lr=0.001) optimizer2 = torch.optim.Adam(model2.parameters(), lr=1.0) nnMapping = {'m1': model1, 'm2': model2} optimizers = {'m1': optimizer1, 'm2': optimizer2} dlpmlnObj = DeepLPMLN(dprogram2, nnMapping, optimizers) ######## # Define dataList, obsList, and the dataset to test m2 ######## dataList, obsList, m1dataset, m2dataset = fileToLists( './data/coinUrn_train.txt', trainLoader) # print(trainLoader[0][0].size()) # print(trainLoader[0][1])
nn(m2(A, B, Carry, 1), carry, [0,1]) :- num1(P,A), num2(P,B), Carry=0..1. result(P,X) :- num1(P, A), num2(P, B), carry(P, Carry), result(A,B,Carry,0,X). carry(P+1,X) :- num1(P, A), num2(P, B), carry(P, Carry), carry(A,B,Carry,0,X). ''' ######## # Define nnMapping and optimizers, initialze DeepLPMLN object ######## m1 = FC(30, 25, 10) # network for adding the numbers m2 = FC(30, 5, 2) # network for finding the carry out nnMapping = {'m1': m1, 'm2': m2} optimizers = { 'm1': torch.optim.Adam(m1.parameters(), lr=0.01), 'm2': torch.optim.Adam(m2.parameters(), lr=0.01) } dlpmlnObj = DeepLPMLN(dprogram, nnMapping, optimizers) ######## # Start training and testing ######## startTime = time.time() for i in range(5): print('Epoch {}...'.format(i + 1)) time1 = time.time() dlpmlnObj.learn(dataList=dataList, obsList=obsList, epoch=1) time2 = time.time() dlpmlnObj.testNN("m1", add_test_dataloader) #test m1 network