Newer
Older
program neuron4dyn
use neurondatatypes
use neuronka
implicit none
type(network) :: a
integer :: i,j,k,l
type(learn_dataset) :: ucicidata,kontrolnidata
type(dataset) :: vycislenisite
!Interface pro subroutinu inicializace:
!*********************************************************************************
! *
! subroutine inicializace(a,ucdata,testdata) *
! type(network),intent(inout) :: a *
! character,intent(inout),optional :: ucdata, testdata *
! end subroutine inicializace *
! *
!*********************************************************************************
! Inicializace programu a sítě
!Interface pro subroutinu nacti_data:
!*********************************************************************************
! *
! subroutine nacti_data(sit,nazevsouboru,datovasada) *
! type(network) :: sit *
! character(len=50) :: nazevsouboru *
! type(learn_dataset) :: datovasada *
! end subroutine nacti_data *
! *
! NEBO *
! *
! subroutine nacti_data(sit,nazevsouboru,datovasada) *
! type(network) :: sit *
! character(len=50) :: nazevsouboru *
! type(dataset) :: datovasada *
! *
!*********************************************************************************
! pokud chceme pouze vyčíslit naučenou síť, může být datovasada datového typu dataset
! Chceme li však síť učit, musí být datového typu learn_dataset
call nacti_data(a,ucdata,ucicidata)
call nacti_data(a,testdata,kontrolnidata)
call initscale(a,ucicidata) !načtení počáteční škály
else
call nacti_data(a,vycislidata,vycislenisite)
end if
!škálování učící sady dat na intervaly [-1,1]
if (.not. a%vycislidata) then
call skalujlearndata(a,ucicidata)
call skalujlearndata(a,kontrolnidata)
else
call skalujvstupy(a,vycislenisite)
call vycisli_sit(a,vycislenisite,sigmoid,linear)
!Zpětné škálování vstupů datového souboru rypu danaset na původní rozměry
call skalujvstupyzpet(a,vycislenisite)
!Zpětné škálování výstupů na původní jendnotky
call skalujvystupy(a,vycislenisite)
!uložení vypočtených dat
call ulozdata(vycislenisite,vycislidata)
! argumenty zpětné propagace (type(network)-parametry sítě,type(learn_dataset)-data na naučení,type(learn_dataset)-data na kontrolu
! učení,přechodová funkce vnitřních vrstec, přechodová funkce poslední vrstvy, derivace přechodové funkce vnitřní vrstvy, derivace
! přechodové funkce poslední vrstvy,derivace chybové funkce)
if (.not. a%vycislidata) then
!call backpropagation3(a,ucicidata,kontrolnidata,sigmoid,linear,dsigmoid,dlinear,kvchybfun,gradkvchybfun)
call AGEKF(a,ucicidata,kontrolnidata,sigmoid,linear,dsigmoid,dlinear,kvchybfun,gradkvchybfun)
else if (a%actf==2) then
call AGEKF(a,ucicidata,kontrolnidata,hsigmoid,linear,dhsigmoid,dlinear,kvchybfun,gradkvchybfun)
end if
call ulozvahy(a)
!call simulated_annealing(a,ucicidata,kontrolnidata,sigmoid,linear,kvchybfun)
!call ulozvahy(a,inisoubor)
call ucicidata%destr_datasetl
call kontrolnidata%destr_datasetl
end if
if (allocated(ucdata)) then
deallocate(ucdata)
end if
if (allocated(testdata)) then
deallocate(testdata)
if (allocated(vycislidata)) then
deallocate(vycislidata)
end if