Я пытаюсь выполнить этот пример MNIST, но вместо использования
input_dataset <- tf$examples$tutorials$mnist$input_data
mnist <- input_dataset$read_data_sets("MNIST-data", one_hot = TRUE)
я пытаюсь импортировать набор данных локально в папку Мои документы / MNIST / MNIST-data.
Первая попытка, которую я попробовал на примере:
images <- file("t10k-images-idx3-ubyte", "rb")
readBin(images, integer(), n=4, endian="big")
m = matrix(readBin(images, integer(), size=1, n=28*28, endian="big"),28,28)
image(m)
par(mfrow=c(5,5))
par(mar=c(0,0,0,0)
for(i in 1:25){m = matrix(readBin(images,integer(), size=1, n=28*28, endian="big"),28,28);image(m[,28:1])}
Я не был уверен, как действовать дальше, поэтому я попробовал что-то еще, другой пример, который я нашел на GitHub:
load.mnist <- function(dir) {
load.image.file <- function(filename) {
ret <- list()
f <- file(filename,'rb')
readBin(f,'integer',n=1,size=4,endian='big')
ret$n <- readBin(f,'integer',n=1,size=4,endian='big')
nrow <- readBin(f,'integer',n=1,size=4,endian='big')
ncol <- readBin(f,'integer',n=1,size=4,endian='big')
x <- readBin(f,'integer',n=ret$n*nrow*ncol,size=1,signed=F)
ret$x <- matrix(x, ncol=nrow*ncol, byrow=T)
close(f)
ret
}
load.label.file <- function(filename) {
f = file(filename,'rb')
readBin(f,'integer',n=1,size=4,endian='big')
n = readBin(f,'integer',n=1,size=4,endian='big')
y = readBin(f,'integer',n=n,size=1,signed=F)
close(f)
y
}
mnist <- list()
mnist$train <- load.image.file(paste(dir,'/train-images-idx3-ubyte',sep=""))
mnist$test <- load.image.file(paste(dir,'/t10k-images-idx3-ubyte',sep=""))
mnist$train$y <- load.label.file(paste(dir,'/train-labels-idx1-ubyte',sep=""))
n <- length(mnist$train$y)
mnist$train$yy <- matrix(rep(0,n*10),nrow=n,ncol=10)
for (i in 1:n){
mnist$train$yy[i,mnist$train$y[i] + 1] <- 1
}
mnist$test$y <- load.label.file(paste(dir,'/t10k-labels-idx1-ubyte',sep=""))
m <- length(mnist$test$y)
mnist$test$yy <- matrix(rep(0,m*10),nrow=m,ncol=10)
for (j in 1:m){
mnist$test$yy[j,mnist$test$y[j] + 1] <- 1
}
mnist
}
show.digit <- function(arr784, col=gray(12:1/12), ...) {
image(matrix(arr784, nrow=28)[,28:1], col=col, ...)
}
show_digit(train$x[5,])
Опять же, я не был уверен, как поступить или как это можно реализовать в примере MNIST For ML Beginners.Третья попытка, которую я попробовал, была на примере TF набора данных Iris:
library(tensorflow)
library(tfdatasets)
mnist_train_spec <- csv_record_spec("mnist_train.csv")
dataset <- text_line_dataset("mnist_train.csv", record_spec = mnist_train_spec)
str(dataset)
mnist_train_spec <- csv_record_spec(
names = c("label", paste("P", as.character(c(2:785)), sep = ""))
)
Эта последняя попытка выдает ошибку - Error in delim_record_spec(example_file, delim = ",", skip, names, types, :
You must provide an example_file if you don't explicitly specify names and types (or defaults)
Мой главный вопрос, как я могу локальноимпортировать файлы данных MNIST в R и по-прежнему иметь возможность запускать пример MNIST без использования двух строк кода, которые я впервые упомянул?