       theta.setZero();
       gradient.setZero();
 
-      Vector<T> bottom_theta;
       Matrix<T> xin_trans = xin.transpose();
       Vector<T> temp(xin.rows());
 

template <typename T>
__global__ void calculateTheta(T *d_gradient, T *d_theta, T factor, int theta_size){
  int col = blockIdx.x * blockDim.x + threadIdx.x;
  __shared__ T theta_0;
  theta_0 = 0;
  if (col < theta_size){
    d_theta[col] = d_theta[col] - (factor * d_gradient[col]);
  }

      }

      CUDA_CALL(cudaFree(d_xin));
      CUDA_CALL(cudaFree(d_y));

      // Predict
