亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? multilayerperceptron.java

?? MacroWeka擴展了著名數據挖掘工具weka
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
  }

  /**
   * A function used to stop the code that called buildclassifier
   * from continuing on before the user has finished the decision tree.
   * @param tf True to stop the thread, False to release the thread that is
   * waiting there (if one).
   */
  public synchronized void blocker(boolean tf) {
    if (tf) {
      try {
	wait();
      } catch(InterruptedException e) {
      }
    }
    else {
      notifyAll();
    }
  }

  /**
   * Call this function to update the control panel for the gui.
   */
  private void updateDisplay() {
    
    if (m_gui) {
      m_controlPanel.m_errorLabel.repaint();
      m_controlPanel.m_epochsLabel.repaint();
    }
  }
  

  /**
   * this will reset all the nodes in the network.
   */
  private void resetNetwork() {
    for (int noc = 0; noc < m_numClasses; noc++) {
      m_outputs[noc].reset();
    }
  }
  
  /**
   * This will cause the output values of all the nodes to be calculated.
   * Note that the m_currentInstance is used to calculate these values.
   */
  private void calculateOutputs() {
    for (int noc = 0; noc < m_numClasses; noc++) {	
      //get the values. 
      m_outputs[noc].outputValue(true);
    }
  }

  /**
   * This will cause the error values to be calculated for all nodes.
   * Note that the m_currentInstance is used to calculate these values.
   * Also the output values should have been calculated first.
   * @return The squared error.
   */
  private double calculateErrors() throws Exception {
    double ret = 0, temp = 0; 
    for (int noc = 0; noc < m_numAttributes; noc++) {
      //get the errors.
      m_inputs[noc].errorValue(true);
      
    }
    for (int noc = 0; noc < m_numClasses; noc++) {
      temp = m_outputs[noc].errorValue(false);
      ret += temp * temp;
    }    
    return ret;
    
  }

  /**
   * This will cause the weight values to be updated based on the learning
   * rate, momentum and the errors that have been calculated for each node.
   * @param l The learning rate to update with.
   * @param m The momentum to update with.
   */
  private void updateNetworkWeights(double l, double m) {
    for (int noc = 0; noc < m_numClasses; noc++) {
      //update weights
      m_outputs[noc].updateWeights(l, m);
    }

  }
  
  /**
   * This creates the required input units.
   */
  private void setupInputs() throws Exception {
    m_inputs = new NeuralEnd[m_numAttributes];
    int now = 0;
    for (int noa = 0; noa < m_numAttributes+1; noa++) {
      if (m_instances.classIndex() != noa) {
	m_inputs[noa - now] = new NeuralEnd(m_instances.attribute(noa).name());
	
	m_inputs[noa - now].setX(.1);
	m_inputs[noa - now].setY((noa - now + 1.0) / (m_numAttributes + 1));
	m_inputs[noa - now].setLink(true, noa);
      }    
      else {
	now = 1;
      }
    }

  }

  /**
   * This creates the required output units.
   */
  private void setupOutputs() throws Exception {
  
    m_outputs = new NeuralEnd[m_numClasses];
    for (int noa = 0; noa < m_numClasses; noa++) {
      if (m_numeric) {
	m_outputs[noa] = new NeuralEnd(m_instances.classAttribute().name());
      }
      else {
	m_outputs[noa]= new NeuralEnd(m_instances.classAttribute().value(noa));
      }
      
      m_outputs[noa].setX(.9);
      m_outputs[noa].setY((noa + 1.0) / (m_numClasses + 1));
      m_outputs[noa].setLink(false, noa);
      NeuralNode temp = new NeuralNode(String.valueOf(m_nextId), m_random,
				       m_sigmoidUnit);
      m_nextId++;
      temp.setX(.75);
      temp.setY((noa + 1.0) / (m_numClasses + 1));
      addNode(temp);
      NeuralConnection.connect(temp, m_outputs[noa]);
    }
 
  }
  
  /**
   * Call this function to automatically generate the hidden units
   */
  private void setupHiddenLayer()
  {
    StringTokenizer tok = new StringTokenizer(m_hiddenLayers, ",");
    int val = 0;  //num of nodes in a layer
    int prev = 0; //used to remember the previous layer
    int num = tok.countTokens(); //number of layers
    String c;
    for (int noa = 0; noa < num; noa++) {
      //note that I am using the Double to get the value rather than the
      //Integer class, because for some reason the Double implementation can
      //handle leading white space and the integer version can't!?!
      c = tok.nextToken().trim();
      if (c.equals("a")) {
	val = (m_numAttributes + m_numClasses) / 2;
      }
      else if (c.equals("i")) {
	val = m_numAttributes;
      }
      else if (c.equals("o")) {
	val = m_numClasses;
      }
      else if (c.equals("t")) {
	val = m_numAttributes + m_numClasses;
      }
      else {
	val = Double.valueOf(c).intValue();
      }
      for (int nob = 0; nob < val; nob++) {
	NeuralNode temp = new NeuralNode(String.valueOf(m_nextId), m_random,
					 m_sigmoidUnit);
	m_nextId++;
	temp.setX(.5 / (num) * noa + .25);
	temp.setY((nob + 1.0) / (val + 1));
	addNode(temp);
	if (noa > 0) {
	  //then do connections
	  for (int noc = m_neuralNodes.length - nob - 1 - prev;
	       noc < m_neuralNodes.length - nob - 1; noc++) {
	    NeuralConnection.connect(m_neuralNodes[noc], temp);
	  }
	}
      }      
      prev = val;
    }
    tok = new StringTokenizer(m_hiddenLayers, ",");
    c = tok.nextToken();
    if (c.equals("a")) {
      val = (m_numAttributes + m_numClasses) / 2;
    }
    else if (c.equals("i")) {
      val = m_numAttributes;
    }
    else if (c.equals("o")) {
      val = m_numClasses;
    }
    else if (c.equals("t")) {
      val = m_numAttributes + m_numClasses;
    }
    else {
      val = Double.valueOf(c).intValue();
    }
    
    if (val == 0) {
      for (int noa = 0; noa < m_numAttributes; noa++) {
	for (int nob = 0; nob < m_numClasses; nob++) {
	  NeuralConnection.connect(m_inputs[noa], m_neuralNodes[nob]);
	}
      }
    }
    else {
      for (int noa = 0; noa < m_numAttributes; noa++) {
	for (int nob = m_numClasses; nob < m_numClasses + val; nob++) {
	  NeuralConnection.connect(m_inputs[noa], m_neuralNodes[nob]);
	}
      }
      for (int noa = m_neuralNodes.length - prev; noa < m_neuralNodes.length;
	   noa++) {
	for (int nob = 0; nob < m_numClasses; nob++) {
	  NeuralConnection.connect(m_neuralNodes[noa], m_neuralNodes[nob]);
	}
      }
    }
    
  }
  
  /**
   * This will go through all the nodes and check if they are connected
   * to a pure output unit. If so they will be set to be linear units.
   * If not they will be set to be sigmoid units.
   */
  private void setEndsToLinear() {
    for (int noa = 0; noa < m_neuralNodes.length; noa++) {
      if ((m_neuralNodes[noa].getType() & NeuralConnection.OUTPUT) ==
	  NeuralConnection.OUTPUT) {
	((NeuralNode)m_neuralNodes[noa]).setMethod(m_linearUnit);
      }
      else {
	((NeuralNode)m_neuralNodes[noa]).setMethod(m_sigmoidUnit);
      }
    }
  }
  
  /**
   * Call this function to build and train a neural network for the training
   * data provided.
   * @param i The training data.
   * @exception Throws exception if can't build classification properly.
   */
  public void buildClassifier(Instances i) throws Exception {

    if (i.checkForStringAttributes()) {
      throw new UnsupportedAttributeTypeException("Cannot handle string attributes!");
    }

    if (i.numInstances() == 0) {
      throw new IllegalArgumentException("No training instances.");
    }
    m_epoch = 0;
    m_error = 0;
    m_instances = null;
    m_currentInstance = null;
    m_controlPanel = null;
    m_nodePanel = null;
    
    
    m_outputs = new NeuralEnd[0];
    m_inputs = new NeuralEnd[0];
    m_numAttributes = 0;
    m_numClasses = 0;
    m_neuralNodes = new NeuralConnection[0];
    
    m_selected = new FastVector(4);
    m_graphers = new FastVector(2);
    m_nextId = 0;
    m_stopIt = true;
    m_stopped = true;
    m_accepted = false;    
    m_instances = new Instances(i);
    m_instances.deleteWithMissingClass();
    if (m_instances.numInstances() == 0) {
      m_instances = null;
      throw new IllegalArgumentException("All class values missing.");
    }
    m_random = new Random(m_randomSeed);
    m_instances.randomize(m_random);

    if (m_useNomToBin) {
      m_nominalToBinaryFilter = new NominalToBinary();
      m_nominalToBinaryFilter.setInputFormat(m_instances);
      m_instances = Filter.useFilter(m_instances,
				     m_nominalToBinaryFilter);
    }
    m_numAttributes = m_instances.numAttributes() - 1;
    m_numClasses = m_instances.numClasses();
 
    
    setClassType(m_instances);
    

   
    //this sets up the validation set.
    Instances valSet = null;
    //numinval is needed later
    int numInVal = (int)(m_valSize / 100.0 * m_instances.numInstances());
    if (m_valSize > 0) {
      if (numInVal == 0) {
	numInVal = 1;
      }
      valSet = new Instances(m_instances, 0, numInVal);
    }
    ///////////

    setupInputs();
      
    setupOutputs();    
    if (m_autoBuild) {
      setupHiddenLayer();
    }
    
    /////////////////////////////
    //this sets up the gui for usage
    if (m_gui) {
      m_win = new JFrame();
      
      m_win.addWindowListener(new WindowAdapter() {
	  public void windowClosing(WindowEvent e) {
	    boolean k = m_stopIt;
	    m_stopIt = true;
	    int well =JOptionPane.showConfirmDialog(m_win, 
						    "Are You Sure...\n"
						    + "Click Yes To Accept"
						    + " The Neural Network" 
						    + "\n Click No To Return",
						    "Accept Neural Network", 
						    JOptionPane.YES_NO_OPTION);
	    
	    if (well == 0) {
	      m_win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	      m_accepted = true;
	      blocker(false);
	    }
	    else {
	      m_win.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	    }
	    m_stopIt = k;
	  }
	});
      
      m_win.getContentPane().setLayout(new BorderLayout());
      m_win.setTitle("Neural Network");
      m_nodePanel = new NodePanel();

      JScrollPane sp = new JScrollPane(m_nodePanel,
				       JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
				       JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
      m_controlPanel = new ControlPanel();
           
      m_win.getContentPane().add(sp, BorderLayout.CENTER);
      m_win.getContentPane().add(m_controlPanel, BorderLayout.SOUTH);
      m_win.setSize(640, 480);
      m_win.setVisible(true);
    }
   
    //This sets up the initial state of the gui
    if (m_gui) {
      blocker(true);
      m_controlPanel.m_changeEpochs.setEnabled(false);
      m_controlPanel.m_changeLearning.setEnabled(false);
      m_controlPanel.m_changeMomentum.setEnabled(false);
    } 
    
    //For silly situations in which the network gets accepted before training
    //commenses
    if (m_numeric) {
      setEndsToLinear();
    }
    if (m_accepted) {
      m_win.dispose();
      m_controlPanel = null;
      m_nodePanel = null;
      m_instances = new Instances(m_instances, 0);
      return;
    }

    //connections done.
    double right = 0;
    double driftOff = 0;
    double lastRight = Double.POSITIVE_INFINITY;
    double tempRate;
    double totalWeight = 0;
    double totalValWeight = 0;
    double origRate = m_learningRate; //only used for when reset
    
    //ensure that at least 1 instance is trained through.
    if (numInVal == m_instances.numInstances()) {
      numInVal--;
    }
    if (numInVal < 0) {
      numInVal = 0;
    }
    for (int noa = numInVal; noa < m_instances.numInstances(); noa++) {
      if (!m_instances.instance(noa).classIsMissing()) {
	totalWeight += m_instances.instance(noa).weight();
      }
    }
    if (m_valSize != 0) {
      for (int noa = 0; noa < valSet.numInstances(); noa++) {
	if (!valSet.instance(noa).classIsMissing()) {
	  totalValWeight += valSet.instance(noa).weight();
	}
      }
    }
    m_stopped = false;
     

    for (int noa = 1; noa < m_numEpochs + 1; noa++) {
      right = 0;
      for (int nob = numInVal; nob < m_instances.numInstances(); nob++) {
	m_currentInstance = m_instances.instance(nob);
	
	if (!m_currentInstance.classIsMissing()) {
	   
	  //this is where the network updating (and training occurs, for the
	  //training set
	  resetNetwork();
	  calculateOutputs();
	  tempRate = m_learningRate * m_currentInstance.weight();  
	  if (m_decay) {
	    tempRate /= noa;
	  }

	  right += (calculateErrors() / m_instances.numClasses()) *
	    m_currentInstance.weight();
	  updateNetworkWeights(tempRate, m_momentum);
	  
	}
	
      }
      right /= totalWeight;
      if (Double.isInfinite(right) || Double.isNaN(right)) {
	if (!m_reset) {
	  m_instances = null;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久三| 亚洲国产毛片aaaaa无费看| 成人性生交大合| 精品国产免费久久| av动漫一区二区| 蜜芽一区二区三区| 国产精品久久久久aaaa| 欧美一级高清大全免费观看| 99re这里只有精品首页| 久国产精品韩国三级视频| 一区二区三区在线播放| 国产人成亚洲第一网站在线播放| 欧美日韩国产大片| 99久久精品99国产精品| 中文字幕免费不卡在线| 麻豆精品新av中文字幕| 亚洲精品一卡二卡| 亚洲国产高清在线观看视频| 欧美mv日韩mv亚洲| 555夜色666亚洲国产免| 在线一区二区视频| yourporn久久国产精品| 成人午夜免费视频| 国产精品一级片| 国产一区二三区好的| 麻豆精品久久久| 日韩精品每日更新| 天天综合网 天天综合色| 亚洲综合色自拍一区| 亚洲精品一二三| 亚洲男女一区二区三区| 一区在线中文字幕| 国产精品久久综合| 中文字幕在线观看不卡视频| 欧美国产精品中文字幕| 国产亚洲精品bt天堂精选| 久久亚洲一区二区三区四区| 精品欧美乱码久久久久久 | 五月天中文字幕一区二区| 精品粉嫩超白一线天av| 日韩三级在线观看| 91精品国产美女浴室洗澡无遮挡| 91精品国模一区二区三区| 欧美二区乱c少妇| 欧美一区二区三区视频在线观看| 69堂精品视频| 精品国产自在久精品国产| 2020日本不卡一区二区视频| 26uuu精品一区二区三区四区在线| 欧美电影免费观看高清完整版在| 欧美电影免费观看高清完整版 | 成人国产精品免费观看动漫| 成人99免费视频| 一本久道中文字幕精品亚洲嫩| 一本大道久久a久久综合婷婷| 91行情网站电视在线观看高清版| 欧美性猛交一区二区三区精品| 欧美日产国产精品| 日韩美女视频在线| 国产三级久久久| 亚洲色图制服诱惑| 成人av小说网| 亚洲乱码国产乱码精品精98午夜 | 亚洲成人一区二区在线观看| 一区av在线播放| 日韩av成人高清| 国产一区日韩二区欧美三区| 成人免费视频app| 在线观看国产精品网站| 欧美一区二区三级| 亚洲国产精品成人综合色在线婷婷 | 欧美一a一片一级一片| 欧美精品视频www在线观看| 欧美电视剧在线看免费| 最新不卡av在线| 日本不卡一区二区三区 | 色网站国产精品| 日韩久久久久久| 亚洲视频综合在线| 日韩—二三区免费观看av| 风间由美性色一区二区三区| 在线免费精品视频| 久久久久综合网| 亚洲一卡二卡三卡四卡| 国产激情精品久久久第一区二区| 欧洲精品在线观看| 久久久久99精品国产片| 一区二区不卡在线播放| 国产成人av网站| 美女一区二区三区| 成人高清视频在线观看| 欧美日韩专区在线| 国产精品色噜噜| 免费人成在线不卡| 色综合视频在线观看| 欧美大片日本大片免费观看| 一区二区三区蜜桃| 国产美女精品一区二区三区| 欧美日韩一区小说| 国产精品久久久久久久第一福利| 日韩成人精品视频| 色婷婷国产精品综合在线观看| 亚洲精品在线免费播放| 亚洲国产精品影院| caoporn国产一区二区| 久久久亚洲高清| 人人精品人人爱| 欧美丝袜丝交足nylons图片| 国产精品污网站| 国产伦精品一区二区三区视频青涩| 欧美精选一区二区| 伊人一区二区三区| 成人ar影院免费观看视频| 久久久蜜桃精品| 看电视剧不卡顿的网站| 欧美美女视频在线观看| 亚洲欧洲中文日韩久久av乱码| 国产传媒一区在线| 日韩精品专区在线| 喷白浆一区二区| 在线播放中文字幕一区| 亚洲一区成人在线| 在线视频国产一区| 亚洲手机成人高清视频| 99久久精品国产网站| 自拍视频在线观看一区二区| 丁香天五香天堂综合| 久久久欧美精品sm网站| 国产乱子伦一区二区三区国色天香| 欧美一区二区三区免费视频| 日韩成人午夜精品| 欧美二区三区的天堂| 日韩国产欧美视频| 在线播放视频一区| 久久精品国产一区二区三区免费看| 91精品国产aⅴ一区二区| 日本不卡一区二区| 精品国精品国产| 国产suv精品一区二区三区| 久久嫩草精品久久久精品| 国产在线精品免费| 久久亚洲精华国产精华液| 极品少妇xxxx偷拍精品少妇| 26uuu久久综合| 成人动漫一区二区在线| 亚洲三级电影网站| 在线影院国内精品| 全国精品久久少妇| 久久影院视频免费| 成人黄动漫网站免费app| 亚洲女女做受ⅹxx高潮| 欧美视频中文字幕| 日韩**一区毛片| 久久久久国产免费免费| 成人激情免费电影网址| 亚洲免费观看高清完整版在线观看| 在线视频欧美区| 美女视频黄频大全不卡视频在线播放| 欧美一区二区三区影视| 国产高清不卡一区二区| 综合精品久久久| 欧美日韩精品一区二区三区四区| 蜜桃久久久久久| 国产人伦精品一区二区| 欧亚洲嫩模精品一区三区| 日韩精品色哟哟| 中文字幕欧美日韩一区| 欧美午夜电影在线播放| 狠狠色综合播放一区二区| 国产精品伦理在线| 欧美日韩精品福利| 国产伦精品一区二区三区免费迷 | 国产亚洲欧美日韩在线一区| 色呦呦日韩精品| 蜜臀av国产精品久久久久| 亚洲国产精品成人综合色在线婷婷 | 久久99精品久久久| 亚洲免费观看视频| 欧美精品一区男女天堂| 色94色欧美sute亚洲线路二| 国产一区日韩二区欧美三区| 亚洲综合免费观看高清完整版在线 | 欧美视频一区在线观看| 国产麻豆成人传媒免费观看| 亚洲人成在线播放网站岛国| 日韩你懂的电影在线观看| 成人精品一区二区三区四区| 三级在线观看一区二区| 国产精品福利电影一区二区三区四区| 在线观看免费成人| 午夜一区二区三区视频| 日本一区二区视频在线| 欧美一区二区三区思思人| 91首页免费视频| 国产乱色国产精品免费视频| 图片区小说区国产精品视频| 国产精品理伦片| 2022国产精品视频| 9191精品国产综合久久久久久| 99免费精品在线|