Commit f79fac65 authored by Stanislav Paláček's avatar Stanislav Paláček

v1.0 - Smazaná diakritika

parent 11fb15bd
......@@ -72,6 +72,8 @@ program neuron4dyn
!uložení vypočtených dat
call ulozdata(vycislenisite,vycislidata)
call vycislenisite%destr_dataset
end if
......@@ -85,6 +87,21 @@ program neuron4dyn
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)
end if
if (allocated(vycislidata)) then
deallocate(vycislidata)
end if
end program neuron4dyn
......@@ -39,10 +39,16 @@ private
integer :: nprvku
real,dimension(:,:),pointer :: vstupy
real,dimension(:,:),pointer :: vystupy
contains
procedure,pass :: constr_dataset
procedure,pass :: destr_dataset
ENDTYPE dataset
TYPE,EXTENDS(dataset) :: learn_dataset
real,dimension(:,:),pointer :: vzorvystupy
contains
procedure,pass :: constr_datasetl
procedure,pass :: destr_datasetl
ENDTYPE
!>> Datový typ reprezentující signály procházející sítí
......@@ -56,6 +62,55 @@ private
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
contains
subroutine destr_dataset(mnozinadat)
class(dataset) :: mnozinadat
deallocate(mnozinadat%vstupy)
deallocate(mnozinadat%vystupy)
end subroutine destr_dataset
subroutine destr_datasetl(mnozinadat)
class(learn_dataset) :: mnozinadat
deallocate(mnozinadat%vstupy)
deallocate(mnozinadat%vystupy)
deallocate(mnozinadat%vzorvystupy)
end subroutine destr_datasetl
subroutine constr_dataset(mnozinadat,sit,ndat)
class(dataset) :: mnozinadat
integer,intent(in) :: ndat
type(network),intent(in) :: sit
mnozinadat%nprvku=ndat
allocate(mnozinadat%vstupy(sit%vrstvy(1)%Nneuronu,ndat))
allocate(mnozinadat%vystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
end subroutine constr_dataset
subroutine constr_datasetl(mnozinadat,sit,ndat)
class(learn_dataset) :: mnozinadat
type(network),intent(in) :: sit
integer,intent(in) :: ndat
mnozinadat%nprvku=ndat
allocate(mnozinadat%vstupy(sit%vrstvy(1)%Nneuronu,ndat))
allocate(mnozinadat%vystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
allocate(mnozinadat%vzorvystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
end subroutine constr_datasetl
!call typsignals%createsitnals(sit,datovasadake které chceme signals vytvořit)
subroutine createsignals(this,sit,dataset)
class(signals) :: this
......
......@@ -7,7 +7,7 @@ implicit none
!veřejné procedury a funkce
public :: inicializace,vycisli_sit,sigmoid,linear,dsigmoid,dlinear !>> Datový typ obsahující parametry sítě
public :: kvchybfun,gradkvchybfun,ulozdata
public :: constr_signals,nacti_data,ulozvahy,constr_dataset,backpropagation,backpropagation2,backpropagation3,backpropagation4
public :: constr_signals,nacti_data,ulozvahy,backpropagation,backpropagation2,backpropagation3,backpropagation4
public :: simulated_annealing,skalujlearndata,skalujvstupy,skalujvstupyzpet,skalujvystupy,initscale,GEKF
INTERFACE vycisli_sit
MODULE PROCEDURE vycisli_sitf
......@@ -15,11 +15,6 @@ implicit none
MODULE PROCEDURE vycisli_sitsl
END INTERFACE
INTERFACE constr_dataset
MODULE PROCEDURE constr_datasets
MODULE PROCEDURE constr_datasetf
END INTERFACE
INTERFACE nacti_data
MODULE PROCEDURE nacti_datas
MODULE PROCEDURE nacti_dataf
......@@ -61,30 +56,6 @@ implicit none
end subroutine constr_signals
subroutine constr_datasets(sit,mnozinadat,ndat)
type(dataset),intent(inout) :: mnozinadat
integer,intent(in) :: ndat
type(network),intent(in) :: sit
mnozinadat%nprvku=ndat
allocate(mnozinadat%vstupy(sit%vrstvy(1)%Nneuronu,ndat))
allocate(mnozinadat%vystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
end subroutine constr_datasets
subroutine constr_datasetf(sit,mnozinadat,ndat)
type(learn_dataset),intent(inout) :: mnozinadat
integer,intent(in) :: ndat
type(network),intent(in) :: sit
mnozinadat%nprvku=ndat
allocate(mnozinadat%vstupy(sit%vrstvy(1)%Nneuronu,ndat))
allocate(mnozinadat%vystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
allocate(mnozinadat%vzorvystupy(sit%vrstvy(sit%pocetvrstev)%Nneuronu,ndat))
end subroutine constr_datasetf
!######################################################################
......@@ -161,23 +132,23 @@ implicit none
deallocate(buffer)
newini=.true.
case("-h","--help")
write(*,*) 'Nápověda k programu "neuron4dyn"'
write(*,*) 'Napoveda k programu "neuron4dyn"'
write(*,*)
write(*,*) 'Použití:'
write(*,*) 'Program vyžaduje následující sobory:'
write(*,*) '"specifikacesite.ini" - specifikuje topologii feed-forward sítě a &
po natrénovaní také její vnitřní parametry'
write(*,*) '"ucicidata.dat" - obsahuje trénovací sadu dat'
write(*,*) '"kontrolnidata.dat" - obsahuje kontrolní sadu dat pro trénování sítě'
write(*,*) 'Pouziti:'
write(*,*) 'Program vyzaduje nasledujici sobory:'
write(*,*) '"specifikacesite.ini" - specifikuje topologii feed-forward site a &
po natrenovani take jeji vnitrni parametry'
write(*,*) '"ucicidata.dat" - obsahuje trenovaci sadu dat'
write(*,*) '"kontrolnidata.dat" - obsahuje kontrolni sadu dat pro trenovani site'
write(*,*)
write(*,*) 'Přepínače aplikace:'
write(*,*) '-h,--help Zoobrazit nápovědu'
write(*,*) '-eval nazevsouboru.dat Vyčíslí síť pro vstupy uložené v souboru "nazevsouboru.dat"'
write(*,*) '-ini nazevsouboru.ini Načte specifikaci sítě ze souboru "nazevsouboru.ini"'
write(*,*) '-dat nazevsouboru.dat Učící data načte ze souboru "nazevsouboru.dat"'
write(*,*) '-tdat nazevsouborut.dat Kontrolní data načte ze souboru "nazevsouboru.dat"'
write(*,*) '-newini Parametry natrénované sítě se uloží do nového inicializačního &
souboru s příponou "_learned.ini"'
write(*,*) 'Prepinace aplikace:'
write(*,*) '-h,--help Zoobrazi napovedu'
write(*,*) '-eval nazevsouboru.dat Vycisli sit pro vstupy ulozene v souboru "nazevsouboru.dat"'
write(*,*) '-ini nazevsouboru.ini Nacte specifikaci site ze souboru "nazevsouboru.ini"'
write(*,*) '-dat nazevsouboru.dat Ucici data nacte ze souboru "nazevsouboru.dat"'
write(*,*) '-tdat nazevsouborut.dat Kontrolni data nacte ze souboru "nazevsouboru.dat"'
write(*,*) '-newini Parametry natrenovane site se ulozi do noveho inicializacniho &
souboru s priponou "_learned.ini"'
STOP
case default
......@@ -206,19 +177,19 @@ implicit none
!>> kontrola, jestli existují vstupní soubory
inquire(file=sit%inisoubor,exist=existuje)
if (.not.existuje) then
write(*,*) 'Inicializační soubor "',sit%inisoubor,'" nenalezen'
write(*,*) 'Inicializacni soubor "',sit%inisoubor,'" nenalezen'
STOP
end if
inquire(file=vzorovadata,exist=existuje)
if (.not.existuje) then
write(*,*) 'Soubor s učícími daty "',vzorovadata,'" nenalezen'
write(*,*) 'Soubor s ucicimi daty "',vzorovadata,'" nenalezen'
STOP
end if
inquire(file=testovacidata,exist=existuje)
if (.not.existuje) then
write(*,*) 'Soubor s testovacími daty "',testovacidata,'" nenalezen'
write(*,*) 'Soubor s testovacimi daty "',testovacidata,'" nenalezen'
STOP
end if
......@@ -228,7 +199,7 @@ implicit none
!>>Načtení počtu vrstev
read(fileid,fmt=*,iostat=readstat) pocvrstev
if (readstat/=0) then
write(*,*) '1. řádek: V souboru ',sit%inisoubor,' špatná specifikace počtu vrstev sítě.'
write(*,*) '1. radek: V souboru ',sit%inisoubor,' spatna specifikace poctu vrstev site.'
STOP
end if
......@@ -241,7 +212,7 @@ implicit none
!>> načtení struktury sítě
read(fileid,fmt=*,iostat=readstat) netwstr
if (readstat/=0) then
write(*,*) '2. řádek: V souboru ',sit%inisoubor,' špatně zapsaná struktura sítě.'
write(*,*) '2. radek: V souboru ',sit%inisoubor,' spatne zapsana struktura site.'
STOP
end if
......@@ -450,12 +421,12 @@ implicit none
open(fileid,file=sit%inisoubor)
write(fileid,fmt=*) sit%pocetvrstev
write(fileid,fmt=*) sit%vrstvy%Nneuronu
write(fileid,fmt=*) "Škálovací parametry"
write(fileid,fmt=*) "Skalovaci parametry"
write(fileid,fmt=*) sit%inpmax
write(fileid,fmt=*) sit%inpmin
write(fileid,fmt=*) sit%outmax
write(fileid,fmt=*) sit%outmin
write(fileid,fmt=*) "Váhy"
write(fileid,fmt=*) "Vahy"
!>> Uložení vah
do l=2,sit%pocetvrstev
do j=1,sit%vrstvy(l)%Nneuronu
......@@ -765,7 +736,7 @@ end function
datovasada%nprvku=0
call constr_dataset(sit,datovasada,pocetradku(nazevsouboru))
call datovasada%constr_dataset(sit,pocetradku(nazevsouboru))
open(fileid,file=nazevsouboru)
do i=1,datovasada%nprvku
......@@ -784,7 +755,7 @@ end function
fileid=43
call constr_dataset(sit,datovasada,pocetradku(nazevsouboru))
call datovasada%constr_datasetl(sit,pocetradku(nazevsouboru))
open(fileid,file=nazevsouboru)
do i=1,datovasada%nprvku
......@@ -2094,7 +2065,7 @@ end function
write(fileid,fmt=*) ' eps=1000'
write(fileid,fmt=*) ' lambda0=0.99'
write(fileid,fmt=*) ' lambda=0.95'
write(fileid,fmt=*) ' targeterr=1e-5 !cílová chyba sítě, které chceme dosáhnout(v normovaném stavu)'
write(fileid,fmt=*) ' targeterr=1e-5 !cilova chyba site, ktere chceme dosahnout(v normovanem stavu)'
close(fileid)
......@@ -2115,7 +2086,7 @@ end function
if (N==1) then
if (abs(a(1,1))< tol) stop "finvert: nastalo dělení nulou"
if (abs(a(1,1))< tol) stop "finvert: nastalo deleni nulou"
inva=1/a
else
b=a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment