Skip to content
Snippets Groups Projects
neuron4dyn.f90 4.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • Stanislav Paláček's avatar
    Stanislav Paláček committed
    program neuron4dyn
     use neurondatatypes
     use neuronka
     implicit none
     
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
     character(len=:),allocatable     :: ucdata,testdata,vycislidata
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
     type(network)                    :: a 
     integer                          :: i,j,k,l
     type(learn_dataset)              :: ucicidata,kontrolnidata
     type(dataset)                    :: vycislenisite
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    !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ě
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
             call inicializace(a,ucdata,testdata,vycislidata)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
       
     
    !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           *
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    !   end subroutine nacti_data                                                     *
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    !                                                                                *
    !*********************************************************************************
    ! 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
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
        if (.not. a%vycislidata) then
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
             call nacti_data(a,ucdata,ucicidata)
             call nacti_data(a,testdata,kontrolnidata)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
             call initscale(a,ucicidata)             !načtení počáteční škály
        else
             call nacti_data(a,vycislidata,vycislenisite)
        end if
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    !škálování učící sady dat na intervaly [-1,1]
        if (.not. a%vycislidata) then
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
             call skalujlearndata(a,ucicidata)
             call skalujlearndata(a,kontrolnidata)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
        else
             call skalujvstupy(a,vycislenisite)
             call vycisli_sit(a,vycislenisite,sigmoid,linear)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
             !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)
    
    
             call vycislenisite%destr_dataset
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
        end if
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    
     ! 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)
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
     if (.not. a%vycislidata) then
       !call backpropagation3(a,ucicidata,kontrolnidata,sigmoid,linear,dsigmoid,dlinear,kvchybfun,gradkvchybfun)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
       if (a%actf==1) then
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
        call AGEKF(a,ucicidata,kontrolnidata,sigmoid,linear,dsigmoid,dlinear,kvchybfun,gradkvchybfun)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
       else if (a%actf==2) then
        call AGEKF(a,ucicidata,kontrolnidata,hsigmoid,linear,dhsigmoid,dlinear,kvchybfun,gradkvchybfun)
       end if
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
        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)
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
     end if
    
     if (allocated(vycislidata)) then
         deallocate(vycislidata)
     end if
    
    
    Stanislav Paláček's avatar
    Stanislav Paláček committed
    
    end program neuron4dyn