R 深度神经网络分类问题MNIST

R 深度神经网络分类问题MNIST,r,neural-network,conv-neural-network,mnist,R,Neural Network,Conv Neural Network,Mnist,嗨,我正在尝试开发一种能够读取手写数字的神经网络 我从网上复制了这个模型(参考:) 我的问题来自新数据,它有很高的分类错误率(见文章末尾) #Youtube链接https://www.youtube.com/watch?v=5bso_5X7Zu4&t=785s #MNIST数据 图书馆(keras) mnist Hello@Pablo Hernandez Vicente,你用手写数字训练过你的神经网络吗?神经网络只用mnist数据集训练过,我想它是由60000张手写图像组成的enough@Man

嗨,我正在尝试开发一种能够读取手写数字的神经网络 我从网上复制了这个模型(参考:) 我的问题来自新数据,它有很高的分类错误率(见文章末尾)

#Youtube链接https://www.youtube.com/watch?v=5bso_5X7Zu4&t=785s
#MNIST数据
图书馆(keras)

mnist Hello@Pablo Hernandez Vicente,你用手写数字训练过你的神经网络吗?神经网络只用mnist数据集训练过,我想它是由60000张手写图像组成的enough@Manu请使用我在myselph.de/neuralNet.html图像处理和我的nNet作品中尝试过的数字查看此网站,因此,问题来自图像预处理
    #Youtube link https://www.youtube.com/watch?v=5bso_5X7Zu4&t=785s
# MNIST data
library(keras)
mnist <- dataset_mnist()
trainx <- mnist$train$x
trainy <- mnist$train$y
testx <- mnist$test$x
testy <- mnist$test$y

# Plot images
par(mfrow = c(3,3))
for (i in 1:9) plot(as.raster(trainx[i,,], max = 255))
par(mfrow= c(1,1))

# Five 
a <- c(1, 12, 36, 48, 66, 101, 133, 139, 146)
par(mfrow = c(3,3))
for (i in a) plot(as.raster(trainx[i,,], max = 255))
par(mfrow= c(1,1))

# Reshape & rescale
trainx <- array_reshape(trainx, c(nrow(trainx), 784))
testx <- array_reshape(testx, c(nrow(testx), 784))
trainx <- trainx / 255
testx <- testx /255

# One hot encoding
trainy <- to_categorical(trainy, 10)
testy <- to_categorical(testy, 10)

# Model
model <- keras_model_sequential()
model %>% 
  layer_dense(units = 512, activation = 'relu', input_shape = c(784)) %>% 
  layer_dropout(rate = 0.4) %>% 
  layer_dense(units= 256, activation = 'relu') %>% 
  layer_dropout(rate = 0.3) %>% 
  layer_dense(units = 10, activation = 'softmax')

# Compile
model %>% 
  compile(loss = 'categorical_crossentropy',
          optimizer = optimizer_rmsprop(),
          metrics = 'accuracy')

# Fit model
history <- model %>% 
  fit(trainx,
      trainy,
      epochs = 30,
      batch_size = 32,
      validation_split = 0.2)

# Evaluation and Prediction - Test data
model %>% evaluate(testx, testy)
pred <- model %>% predict_classes(testx)
table(Predicted = pred, Actual = mnist$test$y)

prob <- model %>% predict_proba(testx)
cbind(prob, Predicted_class = pred, Actual = mnist$test$y)[1:5,]

# New data
library(EBImage)

temp = list.files(pattern = "*.jpg")
mypic <- list()
for (i in 1:length(temp)) {mypic[[i]] <- readImage(temp[[i]])}

par(mfrow = c(4,4))
for (i in 1:length(temp)) plot(mypic[[i]])


for (i in 1:length(temp)) {colorMode(mypic[[i]]) <- Grayscale}
for (i in 1:length(temp)) {mypic[[i]] <- 1-mypic[[i]]}
for (i in 1:length(temp)) {mypic[[i]] <- resize(mypic[[i]], 28, 28)}
str(mypic)
par(mfrow = c(4,5))
for (i in 1:length(temp)) plot(mypic[[i]])
for (i in 1:length(temp)) {mypic[[i]] <- array_reshape(mypic[[i]], c(28,28,3))}
new <- NULL

for (i in 1:length(temp)) {new <- rbind(new, mypic[[i]])}
newx <- new[,1:784]
newy <- c(7,5,2,0,5,3,4,3,2,7,5,6,8,5,6)

# Prediction
pred <- model %>% predict_classes(newx)
pred
table(Predicted = pred, Actual = newy)

prob <- model %>% predict_proba(newx)
cbind(prob, Predicted = pred, Actual = newy)