zoukankan      html  css  js  c++  java
  • 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.cpp --模型准备

    辅助函数和构造函数。

    #include <iostream>
    #include <math.h>
    #include "dA.h"
    using namespace std;
    
    
    // To generate a value between min and max in a uniform distribution
    double uniform(double min, double max) 
    {
      return rand() / (RAND_MAX + 1.0) * (max - min) + min;
    }
    
    // To get the result of n-binomial test by the p probability
    int binomial(int n, double p) 
    {
      if(p < 0 || p > 1) return 0;
      
      int c = 0;
      double r;
      
      for(int i=0; i<n; i++) {
        r = rand() / (RAND_MAX + 1.0);
        if (r < p) c++;
      }
    
      return c;
    }
    
    // To get the result of sigmoid function
    double sigmoid(double x) 
    {
      return 1.0 / (1.0 + exp(-x));
    }
    
    
    dA::dA ( int size,        // N
             int n_v,        // n_visible
             int n_h,        // n_hidden
             double **w,    // W
             double *hb,    // hbias
             double* vb        // vbias
    		 )
    {
    	N = size;
    	n_visible = n_v;
    	n_hidden = n_h;
    
    	if(w == NULL) 
    	{
    		W = new double*[n_hidden];
    		for(int i=0; i<n_hidden; i++) W[i] = new double[n_visible];
    		double a = 1.0 / n_visible;
    
    		for(int i=0; i<n_hidden; i++) 
    		{
    			  for(int j=0; j<n_visible; j++) 
    			  {
    					W[i][j] = uniform(-a, a);
    			  }
    		}
    	} 
    	else 
    	{
    		W = w;
    	}
    
    	if(hb == NULL) 
    	{
    		hbias = new double[n_hidden];
    		for(int i=0; i<n_hidden; i++) 
    			hbias[i] = 0;
    	} 
    	else 
    	{
    		hbias = hb;
    	}
    
    	if(vb == NULL) 
    	{
    		vbias = new double[n_visible];
    		for(int i=0; i<n_visible; i++) 
    			vbias[i] = 0;
    	} else 
    	{
    		vbias = vb;
    	}
    }
    
    dA::~dA() 
    {
    	for(int i=0; i<n_hidden; i++) 
    		delete[] W[i];
    	delete[] W;
    	delete[] hbias;
    	delete[] vbias;
    }


  • 相关阅读:
    Mysql多个字段同时满足多组条件
    spring-boot 配置Druid监控
    回顾存储过程简单使用
    win10环境下使用docker部署spring-boot项目
    LeetCode 35. 搜索插入位置
    二分查找
    归并排序(二)
    归并排序
    剑指 Offer 68
    剑指 Offer 68
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3206582.html
Copyright © 2011-2022 走看看