Advertisement
Rock-Lee

Untitled

Nov 30th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 4.89 KB | None | 0 0
  1. :- module(inputOutput, [aaa/0, getTest/1, getTraining/1, printEpoch/3]).
  2.  
  3. aaa.
  4.  
  5. %% ----------------- Parte com funçoes de Escrita ----------------------------
  6.  
  7. % -- Escreve os dados da biases e do output
  8. % nos seus respectivos arquivos
  9. writeData(BH, BO, WH, WO):-
  10.     writeFile("biasesHidden.txt", BH),
  11.     writeFile("weightsHidden.txt", WH),
  12.  
  13.     writeFile("biasesOut.txt", BO),
  14.     writeFile("weightsOut.txt", WO).
  15.  
  16. % Escreve no arquivo
  17. writeFile(File, Matrix):-
  18.     matrix_to_list(Matrix, Arr),
  19.  
  20.     clear(File),
  21.     open(File, append, Stream),
  22.     processW(Stream, Arr), nl,
  23.     close(Stream).
  24.  
  25. % Cria uma lista com os caracteres presentes no Arquivo
  26. processW(_, []).
  27. processW(Stream, [Line|Rest]) :-
  28.     write(Stream, Line), nl,
  29.     processW(Stream, Rest).
  30.  
  31. % Transforma as listas da matriz em string
  32. matrix_to_list([], []).
  33. matrix_to_list([H|T], [C|R]):-
  34.     atomic_list_concat(H, " ", C),
  35.     matrix_to_list(T, R).
  36.  
  37. % Limpa o arquivo
  38. clear(File):- open(File, write, Stream), write(Stream, ""), close(Stream).
  39.    
  40. % ------------------ Parte com funçoes de Leitura -------------------------
  41.  
  42. % Retorna a matriz de Treino
  43. getTrainings(Train):- readTraining("trainings.txt", Train).
  44.  
  45. % Retorna a matriz de Testes
  46. getTests(Test):- readTraining("tests.txt", Test).
  47.  
  48. % Retorna a imagem de execucao
  49. getImage(Image):- readFile("image.txt", Image).
  50.  
  51. % -- Retorna dados da Hidden
  52. % Retorna a matriz de Treino
  53. getBiasesHidden(Train):- readFile("biasesHidden.txt", Train).
  54. % Retorna a matriz de Treino
  55. getWeightsHidden(Train):- readFile("weightsHidden.txt", Train).
  56.  
  57. % -- Retorna dados do output
  58. % Retorna a matriz de Treino
  59. getBiasesOut(Train):- readFile("biasesOut.txt", Train).
  60. % Retorna a matriz de Treino
  61. getWeightsOut(Train):- readFile("biasesOut.txt", Train).
  62.  
  63. % Lê o arquivo e transforma-o em uma matriz de numeros
  64. readFile(File, Arr):-
  65.     open(File, read, Stream),
  66.  
  67.     read_line_to_string(Stream, Line),
  68.  
  69.     % Setar a quantidade de linhas a ser lida
  70.     processR(Line, Stream, F, 0, 1000),
  71.     arr_to_matrix(F, Arr),
  72.     close(Stream).
  73.  
  74. % Lê um arquivo em forma de Treino
  75. readTraining(File, Arr):-
  76.     open(File, read, Stream),
  77.  
  78.     read_line_to_string(Stream, Line),
  79.     writeln(Line),
  80.     % Setar a quantidade de linhas a ser lida
  81.     processR(Line, Stream, F, 0, 1000),
  82.     arr_to_training(F, Arr),
  83.     close(Stream).
  84.  
  85. % Transforma as strings ,presentes na lista, em listas
  86. arr_to_matrix([], []).
  87. arr_to_matrix([H|T], [C|R]) :- string_to_arr(H, C), arr_to_matrix(T, R).
  88.  
  89. % Transforma as strings ,presentes na lista, em listas de treinos
  90. % no formato [resultado, imagem]
  91. arr_to_training([], []).
  92. arr_to_training([H|T], [C|R]) :-
  93.     string_to_matrix_column(H, [[Label|_]|Mt]),
  94.     C = [Label, Mt],
  95.     arr_to_training(T, R).
  96.  
  97. % Cria uma lista com os caracteres presentes no Arquivo
  98. processR(end_of_file, _, [], _, _).
  99. processR(_, _, [], Limit, Limit).
  100. processR(Line, Stream, [Line|Ans], Cnt, Limit) :-
  101.     read_line_to_string(Stream, Line1),
  102.     Bef is Cnt + 1,
  103.     processR(Line1, Stream, Ans, Bef, Limit).
  104.  
  105. % Transforma todos os caracteres em Atomos
  106. arr_to_atom([], []).
  107. arr_to_atom([H|T], [C|B]):- string_to_atom(H, C), arr_to_atom(T, B).
  108.  
  109. % Transforma todos os Atomos da lista em numeros
  110. arr_to_number([], []).
  111. arr_to_number([H|T], [C|B]):- atom_number(H, C), arr_to_number(T, B).
  112.  
  113. % Transforma todos os Atomos da lista em numeros
  114. arr_to_column_matrix([], []).
  115. arr_to_column_matrix([H|T], [[C]|B]):- atom_number(H, C), arr_to_column_matrix(T, B).
  116.  
  117. % Transforma uma string em uma lista de numeros
  118. string_to_arr(Str, Arr):-
  119.     split_string(Str, " ", " ", Aux1),
  120.    
  121.     arr_to_atom(Aux1 , Aux2),
  122.     arr_to_number(Aux2, Arr).
  123.  
  124. % Transforma uma string em uma lista de numeros
  125. string_to_matrix_column(Str, Arr):-
  126.     split_string(Str, " ", " ", Aux1),
  127.    
  128.     arr_to_atom(Aux1 , Aux2),
  129.     arr_to_column_matrix(Aux2, Arr).
  130.  
  131.  
  132. % Encontra o index de um elemento em uma lista
  133. indexOf([Element|_], Element, 0).
  134. indexOf([_|Tail], Element, Index):-
  135.   indexOf(Tail, Element, Index1),
  136.   Index is Index1+1.
  137.  
  138. % Pega o melhor sigmoid e retorna a resposta definitiva
  139. getBestSigmoid(Values, Ans):-
  140.     max_list(Values, bigger),
  141.     indexOf(Values, bigger, Idx),
  142.     IdxP is Idx + 1,
  143.     Ans = [IdxP, bigger],
  144.     Sigmoid = (bigger * 100 / sum_list(Values)),
  145.  
  146.     %imprimindo os resultados finais
  147.     write("Resposta definitiva: "),
  148.     write("["), write(IdxP), write(" - "),
  149.     format('~2f', Sigmoid),
  150.     write("%]").
  151.    
  152.  
  153. printEpoch(CorrectAmount, Amount, TotalAmount) :- write("Epoch #"),
  154.                                                   write(Amount),
  155.                                                   write(" - "),
  156.                                                   write(CorrectAmount),
  157.                                                   write(" / "),
  158.                                                   writeln(TotalAmount).
  159. save(Network).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement