Neural network 分类泛化的神经网络

Neural network 分类泛化的神经网络,neural-network,mnist,Neural Network,Mnist,我在R中开发了一个神经网络来分类一组图像,即MNIST手写数字数据库中的图像。 我对图像使用pca,神经网络有两个隐藏层。 到目前为止,我无法获得超过95%的验证集准确性。 我可以做些什么来获得验证集的100%准确性?也就是说,我可以做些什么来提高神经网络的泛化能力 (我使用随机反向传播算法来寻找最佳权重) 我将发布用于查找权重的函数的代码。 迪克莱默:我对神经网络和R完全陌生,所以这只是一个尝试 fixedLearningRateStochasticGradientDescent <-

我在R中开发了一个神经网络来分类一组图像,即MNIST手写数字数据库中的图像。 我对图像使用pca,神经网络有两个隐藏层。 到目前为止,我无法获得超过95%的验证集准确性。 我可以做些什么来获得验证集的100%准确性?也就是说,我可以做些什么来提高神经网络的泛化能力

(我使用随机反向传播算法来寻找最佳权重)

我将发布用于查找权重的函数的代码。
迪克莱默:我对神经网络和R完全陌生,所以这只是一个尝试

fixedLearningRateStochasticGradientDescent <- function(X_in, Y, w_list, eta, numOfIterations){ 
  x11(); 
  err_data <- NULL
  N <- dim(X_in)[2]
  X_in <- rbind(rep(1, N), X_in) #add bias neurons to input
  iter <- 0
  for(i in 1:numOfIterations){ 
    errGrad <- NULL; 
    iter <- i
    e_in <- 0 
    g_list <- initGradient(w_list) 
    L <- length(w_list) 


    for(i in (1:N)){ 
      #compute x 
      s_list <- list() 
      x_list <- list(X_in[,i, drop = FALSE]) 
      for(l in 1:L){ 
        S <- t(w_list[[l]]) %*% x_list[[l]] 
        s_list[[length(s_list) + 1]] <- S 
        X <- apply(S, 1:2, theta_list[[l]]) 
        X_n <- dim(X)[2]
        if(l < L){ 
          X <- rbind(rep(1, X_n), X) #add bias neurons to input  

        }
        x_list[[length(x_list) + 1]] <- X
      } 

      #compute d 
      d_list <- list() 
      for(l in (1:L)){ 
        d_list[[l]] <- NULL 
      } 
      target <- t(Y[i,,drop = FALSE]) 
      d_list[[L]] <- 2 * (x_list[[L + 1]] - target) * theta_der_list[[L]](x_list[[L + 1]])
      for(l in (L - 1):1){ 
        T <- theta_der_list[[l]](x_list[[l + 1]]) 
        Q <- w_list[[l + 1]] %*% d_list[[l + 1]] 
        D <- T * Q 
        D <- D[-1, , drop=FALSE] #remove bias
        d_list[[l]] <- D 
      } 

      e_in <- e_in + (1/N * sum((x_list[[L + 1]] - target)^2)) 

      for(l in 1:L){ 
        G <- x_list[[l]] %*% t(d_list[[l]]) 
        #print(G) 
        g_list[[l]] <- G
      } 

      for(i in 1:(length(w_list))){ 
        w_list[[i]] <- w_list[[i]] - eta * g_list[[i]] 
      }
    } 

    err <- e_in 
    g_list <- errGrad[[2]] 
    err_data <- c(err_data, err)
    print(paste0(iter, ": ", err)) 
  } 
  plot(err_data, type="o", col="red")
  print(err)
  return(w_list)
} 

FixedLearningRate随机梯度下降发布您迄今为止尝试过的代码。您正在问一个无法回答的问题,没有人在MNIST中获得100%的准确性(0%的错误)。检查以前发布的结果。