Beispiel #1
0
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]
Beispiel #2
0
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])
Beispiel #3
0
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