program TEST_JETNET implicit NONE Integer*4 hsize Parameter (hsize = 1000000) Integer*4 max_inputs Parameter (max_inputs = 30) Integer*4 hmemor (hsize) common /pawc/ hmemor c common blocks for communication with JETNET Real*4 MAXI, MAXO Parameter (MAXI=1000,MAXO=1000) ! dimension of in/out vectors Integer*4 MXNDJM Integer*4 MSTJN, MSTJM Real*4 PARJN, PARJM Real*4 OIN, OUT COMMON /JNDAT1/ MSTJN(40),PARJN(40),MSTJM(20),PARJM(20), & OIN(MAXI),OUT(MAXO),MXNDJM SAVE /JNDAT1/ c local variables Character*80 outfile / 'scweek:nets.his' / Integer*4 hidden / 5 / Integer*4 i Integer*4 icycle Integer*4 indim / 2 / Integer*4 j Integer*4 k Integer*4 layers / 3 / Integer*4 len Integer*4 NTRAIN / 100000 / Integer*4 NTEST / 5000 / Integer*4 NTOTIN, NTOT2N Integer*4 outlun Integer*4 seed / 12345 / Real*4 x, y Real*4 r Real*4 rvec(2) external ranlux Real*4 sigma1, sigma2 c begin c initialize HBOOK, open histogram file, book histogram call HLIMIT (hsize) outfile = 'test_jetnet.his' outlun = 20 open (unit = outlun, file = outfile, 1 access = 'direct', form = 'unformatted', 1 status = 'unknown', recl = 1024) seed = 12345 call RMARIN(seed, NTOTIN, NTOT2N) call HRFILE (outlun, 'histog', 'N') call HBOOK1 (1, 'output, H1', 100, 0., 1., 0.) call HBOOK1 (2, 'output, H2', 100, 0., 1., 0.) call HBOOK2 (101, 'x,y -- H0 (train)', 1 100, -4., 6., 100, -4., 6., 0.) call HBOOK2 (102, 'x,y -- H1 (train)', 1 100, -4., 6., 100, -4., 6., 0.) call HBOOK2 (103, 'x,y -- all (train)', 1 100, -4., 6., 100, -4., 6., 0.) call HBOOK2 (201, 'x,y -- H0 (test)', 1 100, -4., 6., 100, -4., 6., 0.) call HBOOK2 (202, 'x,y -- H1 (test)', 1 100, -4., 6., 100, -4., 6., 0.) write (*, *) 'number of input nodes' read (*, *) indim write (*, *) 'number of layers' read (*, *) layers write (*, *) 'number of hidden nodes' read (*, *) hidden C...Set network architecture: MSTJN(1)-layered network with C...MSTJN(11) hidden nodes, MSTJN(12) output nodes and C...MSTJN(10) inputs. MSTJN(1)=layers ! number of layers MSTJN(10)=indim ! number of input nodes MSTJN(11)=hidden ! number of hidden nodes MSTJN(12)=1 ! number of output nodes C...Set sigmoid function: MSTJN(3)=1 C...Initial width of weights: PARJN(4)=0.5 C...Choose updating method MSTJN(5)=0 ! Normal Backprop C...Initialize network: CALL JNINIT C...Set suitable parameters for updating method PARJN(1)=2.0 PARJN(2)=0.5 PARJN(11)=0.999 c generate NTRAIN vectors of input data for training with 50-50 types 1,2 write (*, *) 'number of data sets for training' read (*, *) NTRAIN do i = 1, NTRAIN c generate input and assign values of the input vector call RANMAR (r, 1) if ( r .le. 0.5 ) then call GENERATE_XY (1, x, y) OIN(1) = x OIN(2) = y OUT(1) = 0. call HF2 (101, OIN(1), OIN(2), 1.) else call GENERATE_XY (2, x, y) OIN(1) = x OIN(2) = y OUT(1) = 1. call HF2 (102, OIN(1), OIN(2), 1.) endif call HF2 (103, OIN(1), OIN(2), 1.) c train the net call JNTRAL end do ! i = 1, NTRAIN c Now generate data according to either types 1 or two and histogram c output of net. write (*, *) 'number of data sets for testing' read (*, *) NTEST do j = 1, 2 do i = 1, NTEST call GENERATE_XY (j, x, y) OIN(1) = x OIN(2) = y call JNTEST call HF1 (j, OUT(1), 1.) call HF2 (200+j, oin(1), oin(2), 1.) call HF2 (203, oin(1), oin(2), 1.) end do end do c store histogram and close call HROUT (0, icycle, ' ') call HREND ('histog') close (outlun) stop END