just indenting
This commit is contained in:
parent
3d4a525e32
commit
0aeeb726e3
@ -19,61 +19,61 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
%
|
||||||
% Artistic License 2.0
|
% Artistic License 2.0
|
||||||
%
|
%
|
||||||
% Copyright (c) 2000-2006, The Perl Foundation.
|
% Copyright (c) 2000-2006, The Perl Foundation.
|
||||||
%
|
%
|
||||||
% Everyone is permitted to copy and distribute verbatim copies of this
|
% Everyone is permitted to copy and distribute verbatim copies of this
|
||||||
% license document, but changing it is not allowed. Preamble
|
% license document, but changing it is not allowed. Preamble
|
||||||
%
|
%
|
||||||
% This license establishes the terms under which a given free software
|
% This license establishes the terms under which a given free software
|
||||||
% Package may be copied, modified, distributed, and/or
|
% Package may be copied, modified, distributed, and/or
|
||||||
% redistributed. The intent is that the Copyright Holder maintains some
|
% redistributed. The intent is that the Copyright Holder maintains some
|
||||||
% artistic control over the development of that Package while still
|
% artistic control over the development of that Package while still
|
||||||
% keeping the Package available as open source and free software.
|
% keeping the Package available as open source and free software.
|
||||||
%
|
%
|
||||||
% You are always permitted to make arrangements wholly outside of this
|
% You are always permitted to make arrangements wholly outside of this
|
||||||
% license directly with the Copyright Holder of a given Package. If the
|
% license directly with the Copyright Holder of a given Package. If the
|
||||||
% terms of this license do not permit the full use that you propose to
|
% terms of this license do not permit the full use that you propose to
|
||||||
% make of the Package, you should contact the Copyright Holder and seek
|
% make of the Package, you should contact the Copyright Holder and seek
|
||||||
% a different licensing arrangement. Definitions
|
% a different licensing arrangement. Definitions
|
||||||
%
|
%
|
||||||
% "Copyright Holder" means the individual(s) or organization(s) named in
|
% "Copyright Holder" means the individual(s) or organization(s) named in
|
||||||
% the copyright notice for the entire Package.
|
% the copyright notice for the entire Package.
|
||||||
%
|
%
|
||||||
% "Contributor" means any party that has contributed code or other
|
% "Contributor" means any party that has contributed code or other
|
||||||
% material to the Package, in accordance with the Copyright Holder's
|
% material to the Package, in accordance with the Copyright Holder's
|
||||||
% procedures.
|
% procedures.
|
||||||
%
|
%
|
||||||
% "You" and "your" means any person who would like to copy, distribute,
|
% "You" and "your" means any person who would like to copy, distribute,
|
||||||
% or modify the Package.
|
% or modify the Package.
|
||||||
%
|
%
|
||||||
% "Package" means the collection of files distributed by the Copyright
|
% "Package" means the collection of files distributed by the Copyright
|
||||||
% Holder, and derivatives of that collection and/or of those files. A
|
% Holder, and derivatives of that collection and/or of those files. A
|
||||||
% given Package may consist of either the Standard Version, or a
|
% given Package may consist of either the Standard Version, or a
|
||||||
% Modified Version.
|
% Modified Version.
|
||||||
%
|
%
|
||||||
% "Distribute" means providing a copy of the Package or making it
|
% "Distribute" means providing a copy of the Package or making it
|
||||||
% accessible to anyone else, or in the case of a company or
|
% accessible to anyone else, or in the case of a company or
|
||||||
% organization, to others outside of your company or organization.
|
% organization, to others outside of your company or organization.
|
||||||
%
|
%
|
||||||
% "Distributor Fee" means any fee that you charge for Distributing this
|
% "Distributor Fee" means any fee that you charge for Distributing this
|
||||||
% Package or providing support for this Package to another party. It
|
% Package or providing support for this Package to another party. It
|
||||||
% does not mean licensing fees.
|
% does not mean licensing fees.
|
||||||
%
|
%
|
||||||
% "Standard Version" refers to the Package if it has not been modified,
|
% "Standard Version" refers to the Package if it has not been modified,
|
||||||
% or has been modified only in ways explicitly requested by the
|
% or has been modified only in ways explicitly requested by the
|
||||||
% Copyright Holder.
|
% Copyright Holder.
|
||||||
%
|
%
|
||||||
% "Modified Version" means the Package, if it has been changed, and such
|
% "Modified Version" means the Package, if it has been changed, and such
|
||||||
% changes were not explicitly requested by the Copyright Holder.
|
% changes were not explicitly requested by the Copyright Holder.
|
||||||
%
|
%
|
||||||
% "Original License" means this Artistic License as Distributed with the
|
% "Original License" means this Artistic License as Distributed with the
|
||||||
% Standard Version of the Package, in its current version or as it may
|
% Standard Version of the Package, in its current version or as it may
|
||||||
% be modified by The Perl Foundation in the future.
|
% be modified by The Perl Foundation in the future.
|
||||||
%
|
%
|
||||||
% "Source" form means the source code, documentation source, and
|
% "Source" form means the source code, documentation source, and
|
||||||
% configuration files for the Package.
|
% configuration files for the Package.
|
||||||
%
|
%
|
||||||
% "Compiled" form means the compiled bytecode, object code, binary, or
|
% "Compiled" form means the compiled bytecode, object code, binary, or
|
||||||
% any other form resulting from mechanical transformation or translation
|
% any other form resulting from mechanical transformation or translation
|
||||||
% of the Source form.
|
% of the Source form.
|
||||||
@ -81,34 +81,34 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
%
|
||||||
% Permission for Use and Modification Without Distribution
|
% Permission for Use and Modification Without Distribution
|
||||||
%
|
%
|
||||||
% (1) You are permitted to use the Standard Version and create and use
|
% (1) You are permitted to use the Standard Version and create and use
|
||||||
% Modified Versions for any purpose without restriction, provided that
|
% Modified Versions for any purpose without restriction, provided that
|
||||||
% you do not Distribute the Modified Version.
|
% you do not Distribute the Modified Version.
|
||||||
%
|
%
|
||||||
% Permissions for Redistribution of the Standard Version
|
% Permissions for Redistribution of the Standard Version
|
||||||
%
|
%
|
||||||
% (2) You may Distribute verbatim copies of the Source form of the
|
% (2) You may Distribute verbatim copies of the Source form of the
|
||||||
% Standard Version of this Package in any medium without restriction,
|
% Standard Version of this Package in any medium without restriction,
|
||||||
% either gratis or for a Distributor Fee, provided that you duplicate
|
% either gratis or for a Distributor Fee, provided that you duplicate
|
||||||
% all of the original copyright notices and associated disclaimers. At
|
% all of the original copyright notices and associated disclaimers. At
|
||||||
% your discretion, such verbatim copies may or may not include a
|
% your discretion, such verbatim copies may or may not include a
|
||||||
% Compiled form of the Package.
|
% Compiled form of the Package.
|
||||||
%
|
%
|
||||||
% (3) You may apply any bug fixes, portability changes, and other
|
% (3) You may apply any bug fixes, portability changes, and other
|
||||||
% modifications made available from the Copyright Holder. The resulting
|
% modifications made available from the Copyright Holder. The resulting
|
||||||
% Package will still be considered the Standard Version, and as such
|
% Package will still be considered the Standard Version, and as such
|
||||||
% will be subject to the Original License.
|
% will be subject to the Original License.
|
||||||
%
|
%
|
||||||
% Distribution of Modified Versions of the Package as Source
|
% Distribution of Modified Versions of the Package as Source
|
||||||
%
|
%
|
||||||
% (4) You may Distribute your Modified Version as Source (either gratis
|
% (4) You may Distribute your Modified Version as Source (either gratis
|
||||||
% or for a Distributor Fee, and with or without a Compiled form of the
|
% or for a Distributor Fee, and with or without a Compiled form of the
|
||||||
% Modified Version) provided that you clearly document how it differs
|
% Modified Version) provided that you clearly document how it differs
|
||||||
% from the Standard Version, including, but not limited to, documenting
|
% from the Standard Version, including, but not limited to, documenting
|
||||||
% any non-standard features, executables, or modules, and provided that
|
% any non-standard features, executables, or modules, and provided that
|
||||||
% you do at least ONE of the following:
|
% you do at least ONE of the following:
|
||||||
%
|
%
|
||||||
% (a) make the Modified Version available to the Copyright Holder of the
|
% (a) make the Modified Version available to the Copyright Holder of the
|
||||||
% Standard Version, under the Original License, so that the Copyright
|
% Standard Version, under the Original License, so that the Copyright
|
||||||
% Holder may include your modifications in the Standard Version. (b)
|
% Holder may include your modifications in the Standard Version. (b)
|
||||||
@ -127,7 +127,7 @@
|
|||||||
%
|
%
|
||||||
% Distribution of Compiled Forms of the Standard Version or
|
% Distribution of Compiled Forms of the Standard Version or
|
||||||
% Modified Versions without the Source
|
% Modified Versions without the Source
|
||||||
%
|
%
|
||||||
% (5) You may Distribute Compiled forms of the Standard Version without
|
% (5) You may Distribute Compiled forms of the Standard Version without
|
||||||
% the Source, provided that you include complete instructions on how to
|
% the Source, provided that you include complete instructions on how to
|
||||||
% get the Source of the Standard Version. Such instructions must be
|
% get the Source of the Standard Version. Such instructions must be
|
||||||
@ -138,13 +138,13 @@
|
|||||||
% within thirty days after you become aware that the instructions are
|
% within thirty days after you become aware that the instructions are
|
||||||
% invalid, then you do not forfeit any of your rights under this
|
% invalid, then you do not forfeit any of your rights under this
|
||||||
% license.
|
% license.
|
||||||
%
|
%
|
||||||
% (6) You may Distribute a Modified Version in Compiled form without the
|
% (6) You may Distribute a Modified Version in Compiled form without the
|
||||||
% Source, provided that you comply with Section 4 with respect to the
|
% Source, provided that you comply with Section 4 with respect to the
|
||||||
% Source of the Modified Version.
|
% Source of the Modified Version.
|
||||||
%
|
%
|
||||||
% Aggregating or Linking the Package
|
% Aggregating or Linking the Package
|
||||||
%
|
%
|
||||||
% (7) You may aggregate the Package (either the Standard Version or
|
% (7) You may aggregate the Package (either the Standard Version or
|
||||||
% Modified Version) with other packages and Distribute the resulting
|
% Modified Version) with other packages and Distribute the resulting
|
||||||
% aggregation provided that you do not charge a licensing fee for the
|
% aggregation provided that you do not charge a licensing fee for the
|
||||||
@ -152,7 +152,7 @@
|
|||||||
% components in the aggregation are permitted. The terms of this license
|
% components in the aggregation are permitted. The terms of this license
|
||||||
% apply to the use and Distribution of the Standard or Modified Versions
|
% apply to the use and Distribution of the Standard or Modified Versions
|
||||||
% as included in the aggregation.
|
% as included in the aggregation.
|
||||||
%
|
%
|
||||||
% (8) You are permitted to link Modified and Standard Versions with
|
% (8) You are permitted to link Modified and Standard Versions with
|
||||||
% other works, to embed the Package in a larger work of your own, or to
|
% other works, to embed the Package in a larger work of your own, or to
|
||||||
% build stand-alone binary or bytecode versions of applications that
|
% build stand-alone binary or bytecode versions of applications that
|
||||||
@ -160,7 +160,7 @@
|
|||||||
% provided the result does not expose a direct interface to the Package.
|
% provided the result does not expose a direct interface to the Package.
|
||||||
%
|
%
|
||||||
% Items That are Not Considered Part of a Modified Version
|
% Items That are Not Considered Part of a Modified Version
|
||||||
%
|
%
|
||||||
% (9) Works (including, but not limited to, modules and scripts) that
|
% (9) Works (including, but not limited to, modules and scripts) that
|
||||||
% merely extend or make use of the Package, do not, by themselves, cause
|
% merely extend or make use of the Package, do not, by themselves, cause
|
||||||
% the Package to be a Modified Version. In addition, such works are not
|
% the Package to be a Modified Version. In addition, such works are not
|
||||||
@ -168,21 +168,21 @@
|
|||||||
% terms of this license.
|
% terms of this license.
|
||||||
%
|
%
|
||||||
% General Provisions
|
% General Provisions
|
||||||
%
|
%
|
||||||
% (10) Any use, modification, and distribution of the Standard or
|
% (10) Any use, modification, and distribution of the Standard or
|
||||||
% Modified Versions is governed by this Artistic License. By using,
|
% Modified Versions is governed by this Artistic License. By using,
|
||||||
% modifying or distributing the Package, you accept this license. Do not
|
% modifying or distributing the Package, you accept this license. Do not
|
||||||
% use, modify, or distribute the Package, if you do not accept this
|
% use, modify, or distribute the Package, if you do not accept this
|
||||||
% license.
|
% license.
|
||||||
%
|
%
|
||||||
% (11) If your Modified Version has been derived from a Modified Version
|
% (11) If your Modified Version has been derived from a Modified Version
|
||||||
% made by someone other than you, you are nevertheless required to
|
% made by someone other than you, you are nevertheless required to
|
||||||
% ensure that your Modified Version complies with the requirements of
|
% ensure that your Modified Version complies with the requirements of
|
||||||
% this license.
|
% this license.
|
||||||
%
|
%
|
||||||
% (12) This license does not grant you the right to use any trademark,
|
% (12) This license does not grant you the right to use any trademark,
|
||||||
% service mark, tradename, or logo of the Copyright Holder.
|
% service mark, tradename, or logo of the Copyright Holder.
|
||||||
%
|
%
|
||||||
% (13) This license includes the non-exclusive, worldwide,
|
% (13) This license includes the non-exclusive, worldwide,
|
||||||
% free-of-charge patent license to make, have made, use, offer to sell,
|
% free-of-charge patent license to make, have made, use, offer to sell,
|
||||||
% sell, import and otherwise transfer the Package with respect to any
|
% sell, import and otherwise transfer the Package with respect to any
|
||||||
@ -192,7 +192,7 @@
|
|||||||
% that the Package constitutes direct or contributory patent
|
% that the Package constitutes direct or contributory patent
|
||||||
% infringement, then this Artistic License to you shall terminate on the
|
% infringement, then this Artistic License to you shall terminate on the
|
||||||
% date that such litigation is filed.
|
% date that such litigation is filed.
|
||||||
%
|
%
|
||||||
% (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT
|
% (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT
|
||||||
% HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED
|
% HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED
|
||||||
% WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
% WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
@ -300,7 +300,7 @@ check_examples :-
|
|||||||
throw(error(examples))
|
throw(error(examples))
|
||||||
); true
|
); true
|
||||||
),
|
),
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% Check example probabilities
|
% Check example probabilities
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -334,7 +334,7 @@ check_examples :-
|
|||||||
user:example(ID,QueryB,_,_),
|
user:example(ID,QueryB,_,_),
|
||||||
QueryA \= QueryB
|
QueryA \= QueryB
|
||||||
) ;
|
) ;
|
||||||
|
|
||||||
(
|
(
|
||||||
user:test_example(ID,QueryA,_,_),
|
user:test_example(ID,QueryA,_,_),
|
||||||
user:test_example(ID,QueryB,_,_),
|
user:test_example(ID,QueryB,_,_),
|
||||||
@ -354,7 +354,7 @@ check_examples :-
|
|||||||
); true
|
); true
|
||||||
).
|
).
|
||||||
%========================================================================
|
%========================================================================
|
||||||
%=
|
%=
|
||||||
%========================================================================
|
%========================================================================
|
||||||
|
|
||||||
reset_learning :-
|
reset_learning :-
|
||||||
@ -399,24 +399,22 @@ do_learning_intern(0,_) :-
|
|||||||
!.
|
!.
|
||||||
do_learning_intern(Iterations,Epsilon) :-
|
do_learning_intern(Iterations,Epsilon) :-
|
||||||
Iterations>0,
|
Iterations>0,
|
||||||
|
|
||||||
init_learning,
|
init_learning,
|
||||||
current_iteration(CurrentIteration),
|
current_iteration(CurrentIteration),
|
||||||
retractall(current_iteration(_)),
|
retractall(current_iteration(_)),
|
||||||
NextIteration is CurrentIteration+1,
|
NextIteration is CurrentIteration+1,
|
||||||
assertz(current_iteration(NextIteration)),
|
assertz(current_iteration(NextIteration)),
|
||||||
EndIteration is CurrentIteration+Iterations-1,
|
EndIteration is CurrentIteration+Iterations-1,
|
||||||
|
|
||||||
format_learning(1,'~nIteration ~d of ~d~n',[CurrentIteration,EndIteration]),
|
format_learning(1,'~nIteration ~d of ~d~n',[CurrentIteration,EndIteration]),
|
||||||
logger_set_variable(iteration,CurrentIteration),
|
logger_set_variable(iteration,CurrentIteration),
|
||||||
|
|
||||||
logger_start_timer(duration),
|
logger_start_timer(duration),
|
||||||
mse_testset,
|
mse_testset,
|
||||||
ground_truth_difference,
|
ground_truth_difference,
|
||||||
gradient_descent,
|
gradient_descent,
|
||||||
|
|
||||||
problog_flag(log_frequency,Log_Frequency),
|
problog_flag(log_frequency,Log_Frequency),
|
||||||
|
|
||||||
(
|
(
|
||||||
( Log_Frequency>0, 0 =:= CurrentIteration mod Log_Frequency)
|
( Log_Frequency>0, 0 =:= CurrentIteration mod Log_Frequency)
|
||||||
->
|
->
|
||||||
@ -425,7 +423,7 @@ do_learning_intern(Iterations,Epsilon) :-
|
|||||||
),
|
),
|
||||||
|
|
||||||
update_values,
|
update_values,
|
||||||
|
|
||||||
(
|
(
|
||||||
last_mse(Last_MSE)
|
last_mse(Last_MSE)
|
||||||
->
|
->
|
||||||
@ -437,7 +435,7 @@ do_learning_intern(Iterations,Epsilon) :-
|
|||||||
MSE_Diff is abs(Last_MSE-Current_MSE)
|
MSE_Diff is abs(Last_MSE-Current_MSE)
|
||||||
); (
|
); (
|
||||||
logger_get_variable(mse_trainingset,Current_MSE),
|
logger_get_variable(mse_trainingset,Current_MSE),
|
||||||
assertz(last_mse(Current_MSE)),
|
assertz(last_mse(Current_MSE)),
|
||||||
MSE_Diff is Epsilon+1
|
MSE_Diff is Epsilon+1
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
@ -457,7 +455,7 @@ do_learning_intern(Iterations,Epsilon) :-
|
|||||||
|
|
||||||
!,
|
!,
|
||||||
logger_stop_timer(duration),
|
logger_stop_timer(duration),
|
||||||
|
|
||||||
|
|
||||||
logger_write_data,
|
logger_write_data,
|
||||||
|
|
||||||
@ -483,7 +481,7 @@ init_learning :-
|
|||||||
!.
|
!.
|
||||||
init_learning :-
|
init_learning :-
|
||||||
check_examples,
|
check_examples,
|
||||||
|
|
||||||
empty_output_directory,
|
empty_output_directory,
|
||||||
logger_write_header,
|
logger_write_header,
|
||||||
|
|
||||||
@ -506,7 +504,7 @@ init_learning :-
|
|||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% Check, if continuous facts are used.
|
% Check, if continuous facts are used.
|
||||||
% if yes, switch to problog_exact
|
% if yes, switch to problog_exact
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
problog_flag(init_method,(_,_,_,_,OldCall)),
|
problog_flag(init_method,(_,_,_,_,OldCall)),
|
||||||
(
|
(
|
||||||
@ -531,7 +529,7 @@ init_learning :-
|
|||||||
);
|
);
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
succeeds_n_times(user:test_example(_,_,_,_),TestExampleCount),
|
succeeds_n_times(user:test_example(_,_,_,_),TestExampleCount),
|
||||||
format_learning(3,'~q test examples~n',[TestExampleCount]),
|
format_learning(3,'~q test examples~n',[TestExampleCount]),
|
||||||
@ -616,14 +614,15 @@ init_one_query(QueryID,Query,Type) :-
|
|||||||
(
|
(
|
||||||
file_exists(Filename)
|
file_exists(Filename)
|
||||||
->
|
->
|
||||||
format_learning(3,' Reuse existing BDD ~q~n~n',[Filename]);
|
format_learning(3,' Reuse existing BDD ~q~n~n',[Filename])
|
||||||
|
;
|
||||||
(
|
(
|
||||||
problog_flag(init_method,(Query,_Prob,Filename,Probabilities_File,Call)),
|
problog_flag(init_method,(Query,_Prob,Filename,Probabilities_File,Call)),
|
||||||
once(Call),
|
once(Call),
|
||||||
delete_file_silently(Probabilities_File)
|
delete_file_silently(Probabilities_File)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% check wether this BDD is similar to another BDD
|
% check wether this BDD is similar to another BDD
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -632,10 +631,10 @@ init_one_query(QueryID,Query,Type) :-
|
|||||||
->
|
->
|
||||||
(
|
(
|
||||||
calc_md5(Filename,Query_MD5),
|
calc_md5(Filename,Query_MD5),
|
||||||
(
|
(
|
||||||
query_md5(OtherQueryID,Query_MD5,Type)
|
query_md5(OtherQueryID,Query_MD5,Type)
|
||||||
->
|
->
|
||||||
(
|
(
|
||||||
assertz(query_is_similar(QueryID,OtherQueryID)),
|
assertz(query_is_similar(QueryID,OtherQueryID)),
|
||||||
format_learning(3, '~q is similar to ~q~2n', [QueryID,OtherQueryID])
|
format_learning(3, '~q is similar to ~q~2n', [QueryID,OtherQueryID])
|
||||||
);
|
);
|
||||||
@ -665,7 +664,7 @@ update_values :-
|
|||||||
% delete old values
|
% delete old values
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
retractall(query_probability_intern(_,_)),
|
retractall(query_probability_intern(_,_)),
|
||||||
retractall(query_gradient_intern(_,_,_,_)),
|
retractall(query_gradient_intern(_,_,_,_)),
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% start write current probabilities to file
|
% start write current probabilities to file
|
||||||
@ -748,7 +747,7 @@ update_query(QueryID,Symbol,What_To_Update) :-
|
|||||||
|
|
||||||
shell(Command,Error),
|
shell(Command,Error),
|
||||||
%shell('cat /home/vsc/Yap/bins/devel/outputvalues.pl',_),
|
%shell('cat /home/vsc/Yap/bins/devel/outputvalues.pl',_),
|
||||||
|
|
||||||
|
|
||||||
(
|
(
|
||||||
Error = 2
|
Error = 2
|
||||||
@ -784,7 +783,7 @@ update_query(QueryID,Symbol,What_To_Update) :-
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
delete_file_silently(Values_Filename),
|
delete_file_silently(Values_Filename),
|
||||||
format_learning(4,'~w',[Symbol])
|
format_learning(4,'~w',[Symbol])
|
||||||
)
|
)
|
||||||
@ -930,7 +929,7 @@ mse_testset :-
|
|||||||
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
||||||
format(Handle,"% Iteration, train/test, QueryID, Query, GroundTruth, Prediction %~n",[]),
|
format(Handle,"% Iteration, train/test, QueryID, Query, GroundTruth, Prediction %~n",[]),
|
||||||
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
||||||
|
|
||||||
format_learning(2,'MSE_Test ',[]),
|
format_learning(2,'MSE_Test ',[]),
|
||||||
update_values,
|
update_values,
|
||||||
bb_put(llh_test_queries,0.0),
|
bb_put(llh_test_queries,0.0),
|
||||||
@ -1064,7 +1063,7 @@ add_gradient(Learning_Rate) :-
|
|||||||
atomic_concat(['old_sigma_',FactID],Key2),
|
atomic_concat(['old_sigma_',FactID],Key2),
|
||||||
atomic_concat(['grad_mu_',FactID],Key3),
|
atomic_concat(['grad_mu_',FactID],Key3),
|
||||||
atomic_concat(['grad_sigma_',FactID],Key4),
|
atomic_concat(['grad_sigma_',FactID],Key4),
|
||||||
|
|
||||||
bb_get(Key,Old_Mu),
|
bb_get(Key,Old_Mu),
|
||||||
bb_get(Key2,Old_Sigma),
|
bb_get(Key2,Old_Sigma),
|
||||||
bb_get(Key3,Grad_Mu),
|
bb_get(Key3,Grad_Mu),
|
||||||
@ -1078,7 +1077,7 @@ add_gradient(Learning_Rate) :-
|
|||||||
(
|
(
|
||||||
atomic_concat(['old_prob_',FactID],Key),
|
atomic_concat(['old_prob_',FactID],Key),
|
||||||
atomic_concat(['grad_',FactID],Key2),
|
atomic_concat(['grad_',FactID],Key2),
|
||||||
|
|
||||||
bb_get(Key,OldProbability),
|
bb_get(Key,OldProbability),
|
||||||
bb_get(Key2,GradValue),
|
bb_get(Key2,GradValue),
|
||||||
|
|
||||||
@ -1102,9 +1101,9 @@ gradient_descent :-
|
|||||||
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
||||||
format(Handle,"% Iteration, train/test, QueryID, Query, GroundTruth, Prediction %~n",[]),
|
format(Handle,"% Iteration, train/test, QueryID, Query, GroundTruth, Prediction %~n",[]),
|
||||||
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
format(Handle,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~n",[]),
|
||||||
|
|
||||||
format_learning(2,'Gradient ',[]),
|
format_learning(2,'Gradient ',[]),
|
||||||
|
|
||||||
save_old_probabilities,
|
save_old_probabilities,
|
||||||
update_values,
|
update_values,
|
||||||
|
|
||||||
@ -1139,7 +1138,7 @@ gradient_descent :-
|
|||||||
bb_put(mse_train_min, 0.0),
|
bb_put(mse_train_min, 0.0),
|
||||||
bb_put(mse_train_max, 0.0),
|
bb_put(mse_train_max, 0.0),
|
||||||
bb_put(llh_training_queries, 0.0),
|
bb_put(llh_training_queries, 0.0),
|
||||||
|
|
||||||
problog_flag(alpha,Alpha),
|
problog_flag(alpha,Alpha),
|
||||||
logger_set_variable(alpha,Alpha),
|
logger_set_variable(alpha,Alpha),
|
||||||
example_count(Example_Count),
|
example_count(Example_Count),
|
||||||
@ -1161,8 +1160,8 @@ gradient_descent :-
|
|||||||
Y is Y2*2/Example_Count * (BDDProb-QueryProb);
|
Y is Y2*2/Example_Count * (BDDProb-QueryProb);
|
||||||
Y=0.0
|
Y=0.0
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
||||||
% first do the calculations for the MSE on training set
|
% first do the calculations for the MSE on training set
|
||||||
(
|
(
|
||||||
(Type == '='; (Type == '<', BDDProb>QueryProb); (Type=='>',BDDProb<QueryProb))
|
(Type == '='; (Type == '<', BDDProb>QueryProb); (Type=='>',BDDProb<QueryProb))
|
||||||
@ -1170,7 +1169,7 @@ gradient_descent :-
|
|||||||
Squared_Error is (BDDProb-QueryProb)**2;
|
Squared_Error is (BDDProb-QueryProb)**2;
|
||||||
Squared_Error=0.0
|
Squared_Error=0.0
|
||||||
),
|
),
|
||||||
|
|
||||||
bb_get(mse_train_sum,Old_MSE_Train_Sum),
|
bb_get(mse_train_sum,Old_MSE_Train_Sum),
|
||||||
bb_get(mse_train_min,Old_MSE_Train_Min),
|
bb_get(mse_train_min,Old_MSE_Train_Min),
|
||||||
bb_get(mse_train_max,Old_MSE_Train_Max),
|
bb_get(mse_train_max,Old_MSE_Train_Max),
|
||||||
@ -1183,7 +1182,7 @@ gradient_descent :-
|
|||||||
bb_put(mse_train_min,New_MSE_Train_Min),
|
bb_put(mse_train_min,New_MSE_Train_Min),
|
||||||
bb_put(mse_train_max,New_MSE_Train_Max),
|
bb_put(mse_train_max,New_MSE_Train_Max),
|
||||||
bb_put(llh_training_queries,New_LLH_Training_Queries),
|
bb_put(llh_training_queries,New_LLH_Training_Queries),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
( % go over all tunable facts
|
( % go over all tunable facts
|
||||||
@ -1194,7 +1193,7 @@ gradient_descent :-
|
|||||||
(
|
(
|
||||||
atomic_concat(['grad_mu_',FactID],Key),
|
atomic_concat(['grad_mu_',FactID],Key),
|
||||||
atomic_concat(['grad_sigma_',FactID],Key2),
|
atomic_concat(['grad_sigma_',FactID],Key2),
|
||||||
|
|
||||||
% if the following query fails,
|
% if the following query fails,
|
||||||
% it means, the fact is not used in the proof
|
% it means, the fact is not used in the proof
|
||||||
% of QueryID, and the gradient is 0.0 and will
|
% of QueryID, and the gradient is 0.0 and will
|
||||||
@ -1214,7 +1213,7 @@ gradient_descent :-
|
|||||||
);
|
);
|
||||||
(
|
(
|
||||||
atomic_concat(['grad_',FactID],Key),
|
atomic_concat(['grad_',FactID],Key),
|
||||||
|
|
||||||
% if the following query fails,
|
% if the following query fails,
|
||||||
% it means, the fact is not used in the proof
|
% it means, the fact is not used in the proof
|
||||||
% of QueryID, and the gradient is 0.0 and will
|
% of QueryID, and the gradient is 0.0 and will
|
||||||
@ -1231,7 +1230,7 @@ gradient_descent :-
|
|||||||
fail; % go to next fact
|
fail; % go to next fact
|
||||||
true
|
true
|
||||||
),
|
),
|
||||||
|
|
||||||
once(update_query_cleanup(QueryID))
|
once(update_query_cleanup(QueryID))
|
||||||
)),
|
)),
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -1240,7 +1239,7 @@ gradient_descent :-
|
|||||||
!,
|
!,
|
||||||
|
|
||||||
close(Handle),
|
close(Handle),
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% start statistics on gradient
|
% start statistics on gradient
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -1324,7 +1323,7 @@ lineSearch(Final_X,Final_Value) :-
|
|||||||
problog_flag(line_search_interval,(A,B)),
|
problog_flag(line_search_interval,(A,B)),
|
||||||
|
|
||||||
format_learning(3,'Line search in interval (~4f,~4f)~n',[A,B]),
|
format_learning(3,'Line search in interval (~4f,~4f)~n',[A,B]),
|
||||||
|
|
||||||
% init values
|
% init values
|
||||||
Acc is Tol * (B-A),
|
Acc is Tol * (B-A),
|
||||||
InitRight is A + Tau*(B-A),
|
InitRight is A + Tau*(B-A),
|
||||||
@ -1348,7 +1347,7 @@ lineSearch(Final_X,Final_Value) :-
|
|||||||
|
|
||||||
(
|
(
|
||||||
% check for infinity, if there is, go to the left
|
% check for infinity, if there is, go to the left
|
||||||
( FLeft >= FRight, \+ FLeft = (+inf), \+ FRight = (+inf) )
|
( FLeft >= FRight, \+ FLeft = (+inf), \+ FRight = (+inf) )
|
||||||
->
|
->
|
||||||
(
|
(
|
||||||
AkNew=Left,
|
AkNew=Left,
|
||||||
@ -1392,18 +1391,18 @@ lineSearch(Final_X,Final_Value) :-
|
|||||||
|
|
||||||
% apperantly it is, so get me out of here and
|
% apperantly it is, so get me out of here and
|
||||||
% cut away the choice point from repeat
|
% cut away the choice point from repeat
|
||||||
!
|
!
|
||||||
),
|
),
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%%%% END BACK TRACKING
|
%%%% END BACK TRACKING
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% it doesn't harm to check also the value in the middle
|
% it doesn't harm to check also the value in the middle
|
||||||
% of the current search interval
|
% of the current search interval
|
||||||
Middle is (AkNew + BkNew) / 2.0,
|
Middle is (AkNew + BkNew) / 2.0,
|
||||||
line_search_evaluate_point(Middle,Value_Middle),
|
line_search_evaluate_point(Middle,Value_Middle),
|
||||||
|
|
||||||
% return the optimal value
|
% return the optimal value
|
||||||
my_5_min(Value_Middle,FlNew,FrNew,FLeftNew,FRightNew,
|
my_5_min(Value_Middle,FlNew,FrNew,FLeftNew,FRightNew,
|
||||||
@ -1431,7 +1430,7 @@ line_search_postcheck(_,_, LLH, FinalPosition) :-
|
|||||||
(
|
(
|
||||||
|
|
||||||
repeat,
|
repeat,
|
||||||
|
|
||||||
bb_get(line_search_offset,OldOffset),
|
bb_get(line_search_offset,OldOffset),
|
||||||
NewOffset is OldOffset * Tolerance,
|
NewOffset is OldOffset * Tolerance,
|
||||||
bb_put(line_search_offset,NewOffset),
|
bb_put(line_search_offset,NewOffset),
|
||||||
@ -1494,7 +1493,7 @@ init_flags :-
|
|||||||
problog_define_flag(output_directory, problog_flag_validate_directory, 'directory for logfiles etc', Output_Folder,learning_general,flags:learning_output_dir_handler),
|
problog_define_flag(output_directory, problog_flag_validate_directory, 'directory for logfiles etc', Output_Folder,learning_general,flags:learning_output_dir_handler),
|
||||||
problog_define_flag(log_frequency, problog_flag_validate_posint, 'log results every nth iteration', 1, learning_general),
|
problog_define_flag(log_frequency, problog_flag_validate_posint, 'log results every nth iteration', 1, learning_general),
|
||||||
problog_define_flag(rebuild_bdds, problog_flag_validate_nonegint, 'rebuild BDDs every nth iteration', 0, learning_general),
|
problog_define_flag(rebuild_bdds, problog_flag_validate_nonegint, 'rebuild BDDs every nth iteration', 0, learning_general),
|
||||||
problog_define_flag(reuse_initialized_bdds,problog_flag_validate_boolean, 'Reuse BDDs from previous runs',false, learning_general),
|
problog_define_flag(reuse_initialized_bdds,problog_flag_validate_boolean, 'Reuse BDDs from previous runs',false, learning_general),
|
||||||
problog_define_flag(check_duplicate_bdds,problog_flag_validate_boolean,'Store intermediate results in hash table',true,learning_general),
|
problog_define_flag(check_duplicate_bdds,problog_flag_validate_boolean,'Store intermediate results in hash table',true,learning_general),
|
||||||
problog_define_flag(init_method,problog_flag_validate_dummy,'ProbLog predicate to search proofs',(Query,Probability,BDDFile,ProbFile,problog_kbest_save(Query,100,Probability,_Status,BDDFile,ProbFile)),learning_general,flags:learning_init_handler),
|
problog_define_flag(init_method,problog_flag_validate_dummy,'ProbLog predicate to search proofs',(Query,Probability,BDDFile,ProbFile,problog_kbest_save(Query,100,Probability,_Status,BDDFile,ProbFile)),learning_general,flags:learning_init_handler),
|
||||||
problog_define_flag(alpha,problog_flag_validate_number,'weight of negative examples (auto=n_p/n_n)',auto,learning_general,flags:auto_handler),
|
problog_define_flag(alpha,problog_flag_validate_number,'weight of negative examples (auto=n_p/n_n)',auto,learning_general,flags:auto_handler),
|
||||||
@ -1506,7 +1505,7 @@ init_flags :-
|
|||||||
problog_define_flag(line_search_tau, problog_flag_validate_indomain_0_1_open,'tau value for line search',0.618033988749,learning_line_search),
|
problog_define_flag(line_search_tau, problog_flag_validate_indomain_0_1_open,'tau value for line search',0.618033988749,learning_line_search),
|
||||||
problog_define_flag(line_search_tolerance,problog_flag_validate_posnumber,'tolerance value for line search',0.05,learning_line_search),
|
problog_define_flag(line_search_tolerance,problog_flag_validate_posnumber,'tolerance value for line search',0.05,learning_line_search),
|
||||||
problog_define_flag(line_search_interval, problog_flag_validate_dummy,'interval for line search',(0,100),learning_line_search,flags:linesearch_interval_handler).
|
problog_define_flag(line_search_interval, problog_flag_validate_dummy,'interval for line search',(0,100),learning_line_search,flags:linesearch_interval_handler).
|
||||||
|
|
||||||
|
|
||||||
init_logger :-
|
init_logger :-
|
||||||
logger_define_variable(iteration, int),
|
logger_define_variable(iteration, int),
|
||||||
@ -1530,4 +1529,3 @@ init_logger :-
|
|||||||
|
|
||||||
:- initialization(init_flags).
|
:- initialization(init_flags).
|
||||||
:- initialization(init_logger).
|
:- initialization(init_logger).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user