NeuralMesh
  • Class
  • Tree

Classes

  • AbstractNetwork
  • Controller
  • layer
  • ManagedNetwork
  • Model
  • mysql
  • Navigation
  • network
  • NeuralMesh
  • neuron
  • nmesh
  • synapse
  • train
  • UnmanagedNetwork
  • users
  • validation
  1 <?php
  2 class network {
  3 
  4     public $nn; //network object
  5     
  6     function get($id) {
  7         $q = mysql::query("networks.get",array("id"=>$id,"user"=>$_SESSION['id']));
  8         if(!$q->num_rows) throw new Exception("Network not found.");
  9         $data = $q->fetch_assoc();
 10         $this->nn = unserialize(gzuncompress($data['snapshot']));
 11         //unset($data['snapshot']);// = unserialize(gzuncompress($data['snapshot']));
 12         return $data;
 13     }
 14     
 15     function getAuth($auth) {
 16         $q = mysql::query("networks.auth",array("auth"=>$auth));
 17         if(!$q->num_rows) throw new Exception("Authkey invalid.");
 18         $data = $q->fetch_assoc();
 19         $this->nn = unserialize(gzuncompress($data['snapshot']));
 20         unset($data['snapshot']);
 21         return $data;
 22     }
 23     
 24     function listNetworks() {
 25         $q = mysql::query("networks.getAll",array("id"=>$_SESSION['id']));
 26         $output = "";
 27         if($q->num_rows) {
 28             $data = mysql::fetch_all($q);
 29             foreach($data as $row) {
 30                 $id = $row['networkID'];
 31                 $output .= "<tr><td><a href='nm-network.php?n=".$id."' title='Manage Network'>".$row['networkName']."</a></td>";
 32                 $output .= "<td><a href='nm-edit-network.php?n=$id' title='Settings'><img src='images/cog.png' /></a> ";
 33                 $output .= "<a href='nm-manage-network.php?action=".Model::$NETWORK."&n=$id' title='Delete Network'><img src='images/cross.png' /></a>";
 34                 $output .= "</td></tr>";
 35             }
 36         } else {
 37             $output .= "<tr><td colspan='2'><span>No Networks!</td></tr>";
 38         }
 39         return $output;
 40     }
 41     
 42     function add($name,$authkey,$type,$lr="DEFAULT",$momentum="DEFAULT",$mse=NULL,$epoch=NULL) {
 43         mysql::query("networks.add",array("label"=>$name, "lr"=>$lr, "mse"=>$mse,
 44                                           "epoch"=>$epoch, "rate"=>$momentum, 
 45                                           "key"=>$authkey,"type"=>$type));
 46         return mysql::last_id();
 47     }
 48     
 49     function save($nn,$id) {
 50         ini_set('memory_limit', '-1');
 51         $data = gzcompress(serialize($nn));
 52         if(strlen($data)/1024 > 1024) { //if data is greater than 1mb
 53             $chunks = str_split($data,500);
 54             foreach($chunks as $chunk)
 55                 mysql::query("networks.stream",array("chunk"=>$chunk,"id"=>$id));
 56         } else {
 57             mysql::query("networks.update",array("data"=>$data,"id"=>$id));
 58         }
 59     }
 60     
 61     function updateNetwork($id,$name,$lr,$mse,$epoch,$momentum) {
 62         mysql::query("networks.updateAll",array("id"=>$id,
 63                                              "label"=>$name,
 64                                              "lr"=>$lr,
 65                                              "mse"=>$mse,
 66                                              "epoch"=>$epoch,
 67                                              "momentum"=>$momentum));
 68     }
 69     
 70     static function validate($id) {
 71         $q = mysql::query("networks.validate",array("id"=>$id,"user"=>$_SESSION['id']));
 72         return ($q->num_rows);
 73     }
 74     
 75     function clearHistory($id,$user) {
 76         if(self::validate($id))
 77             mysql::query("epoch.clear",array("id"=>$_GET['n']));
 78     }
 79     
 80     function getStats($user) {
 81         $q = mysql::query("networks.stats", array("id"=>$user));
 82         return $q->fetch_assoc();
 83     }
 84     
 85     function delete($id) {
 86         mysql::query("networks.remove",array("id"=>$id));
 87     }
 88     
 89     function buildTree($id,$nn) {
 90         $uuid = 0;
 91         $output = "<ul>";
 92         $lcount = count($nn->layer);
 93         for($l=0;$l<$lcount;$l++) {
 94             $output .= "<li class='layer'><a href='javascript:void(0);' onclick=\"toggle('ul".($uuid+1)."',this);\">-</a> Layer ".($l+1);
 95             $ncount = count($nn->layer[$l]->neuron); 
 96             for($n=0;$n<$ncount;$n++) {
 97                 $uuid++;
 98                 if($n==0) $output .= "<ul id='ul$uuid'>";
 99                 $output .= "<li class='neuron'><a href='javascript:void(0);' onclick=\"toggle('ul".($uuid+1)."',this);\">+</a> Neuron ".($n+1);
100                 $scount = count($nn->layer[$l]->neuron[$n]->synapse);
101                 for($s=0;$s<$scount;$s++) {
102                     $uuid++;
103                     if($s==0) $output .= "<ul id='ul$uuid' style='display:none'>";
104                     $output .= "<li class='synapse'>Synapse ".($s+1)."</li>";
105                     if($s==$scount-1) $output .= "</ul>";
106                     
107                 }
108                 $output .= "</li>";
109                 if($n==$ncount-1) $output .= "</ul>";
110             }
111             $output .= "</li>";
112         }
113         $output .= "</ul>";
114         mysql::query("cache.save",array("id"=>$id."tree","network"=>$id,"data"=>$output));
115         return $output;
116     }
117 }
118 ?>
NeuralMesh API documentation generated by ApiGen