code: function(sx, sy, depth, c) {
      // this is how you check if a variable is an array. Oh, Javascript :)
      if(Object.prototype.toString.call(sx) === '[object Array]') {
        // we were given a list in sx, assume 1D volume and fill it up
        this.sx = 1;
        this.sy = 1;
        this.depth = sx.length;
        // we have to do the following copy because we want to use
        // fast typed arrays, not an ordinary javascript array
        this.w = global.zeros(this.depth);
        this.dw = global.zeros(this.depth);
        for(var i=0;i<this.depth;i++) {
          this.w[i] = sx[i];
        }
      } else {
        // we were given dimensions of the vol
        this.sx = sx;
        this.sy = sy;
        this.depth = depth;
        var n = sx*sy*depth;
        this.w = global.zeros(n);
        this.dw = global.zeros(n);
        if(typeof c === 'undefined') {
          // weight normalization is done to equalize the output
          // variance of every neuron, otherwise neurons with a lot
          // of incoming connections have outputs of larger variance
          var scale = Math.sqrt(1.0/(sx*sy*depth));
          for(var i=0;i<n;i++) { 
            this.w[i] = global.randn(0.0, scale);
          }
        } else {
          for(var i=0;i<n;i++) { 
            this.w[i] = c;
          }
        }
      }
    }
docs: Vol is the basic building block of all data in a net. it is essentially just a 3D volume of numbers, with a width (sx), height (sy), and depth (depth). it is used to hold data for all filters, all volumes, all weights, and also stores all gradients w.r.t. the data. c is optionally a value to initialize the volume with. If c is missing, fills the Vol with random numbers.