R dili kullanılarak oluşturulan derin öğrenme modeli kullanılarak Rakam Sınıflandırma.

Giriiş:
Makine öğrenimi veya derin öğrenme uygulamaları denilince aklımıza gelen tek dil python'dur. Ancak, bu yeteneğe sahip tek dilin bu olmadığını biliyor muydunuz? Bu amaçla kullanılabilecek python dışındaki programlama dilleri Java, Scala, Julia, MATLAB ve R'dir. Bu, onu rakipsiz kılan sürece yardımcı olmak için python'da bulunan geniş modül ve kitaplık listesidir.
İşte bu yazıda, Elle yazılmış rakam sınıflandırması için R kullanarak model geliştirmeyi ele alacağız.
Gerekli kitaplıkları içe aktarma:
Projemiz için gerekli kütüphaneleri içe aktararak başlıyoruz. , , ve kitaplıkları library()
içe aktarmak için işlevi kullanıyoruz . Bu kütüphaneleri import etmeden önce R ortamında kurulu olduğundan emin olmalıyız. İçe aktaramıyorsak, kütüphaneleri R programlama ortamımıza kurmak için bu işlevi kullanabiliriz .dslabs
keras
tensorflow
install.packages()
library(dslabs)
library(keras)
library(tensorflow)
Daha sonra MNIST veri setini değişkenlerimize yükleyip saklıyoruz. Veri setini yüklemek için kütüphanedeki read_mnist()
fonksiyonu kullanıyoruz .dslabs
mnist <- read_mnist()
i <- 5
image(1:28, 1:28, matrix(mnist$test$images[i,], nrow=28)[ , 28:1],
col = gray(seq(0, 1, 0.05)), xlab = "", ylab="")
Image displayed.
Daha sonra, MNIST verilerini eğitim ve doğrulama için hazırlamak için gereken veri hazırlama adımlarını uyguluyoruz ve sınıfın El Yazısı Rakam Veri Kümesini aynı şekilde biçimlendirilecek şekilde hazırlıyoruz.
Fonksiyonu kullanarak sınıfın El Yazısı Rakam Veri Kümesini yüklüyoruz read.csv()
ve değişkende saklıyoruz chd
.
chd <- read.csv("combined_digits_1.csv")
dim(chd)
xtest = chd[,1:784]
ytest = chd[,785]
xtest = as.matrix(xtest)
xtest <- array_reshape(xtest, c(nrow(xtest), 28, 28, 1))
mnist = read_mnist()
x_train = mnist$train$images
y_train = mnist$train$labels
x_val = mnist$test$images
y_val = mnist$test$labels
x_train = array_reshape(x_train, c(nrow(x_train), 28, 28, 1))
x_val = array_reshape(x_val, c(nrow(x_val), 28, 28, 1))
y_train = to_categorical(y_train, 10)
y_val = to_categorical(y_val, 10)
ytest = to_categorical(ytest,10)
Artık verilerimizi işledikten sonra modelimizin tasarımına ve eğitimine geçebiliriz. Bunun için modelimizi oluşturmak için kütüphanedeki keras_model_sequential()
işlevi kullanıyoruz . keras
Modelimiz iki evrişim katmanından, iki maksimum havuzlama katmanından, iki bırakma katmanından, iki yoğun katmandan ve bir softmax aktivasyon fonksiyonundan oluşur.
#Model Building: Code Here
input_shape <- c(28, 28, 1)
batch_size <- 128
num_classes <- 10
epochs <- 10
model <- keras_model_sequential() %>%
layer_conv_2d(filters = 32, kernel_size = c(3,3), activation = 'relu', input_shape = input_shape) %>%
layer_max_pooling_2d(pool_size = c(2, 2)) %>%
layer_conv_2d(filters = 64, kernel_size = c(3,3), activation = 'relu') %>%
layer_max_pooling_2d(pool_size = c(2, 2)) %>%
layer_dropout(rate = 0.25) %>%
layer_flatten() %>%
layer_dense(units = 128, activation = 'relu') %>%
layer_dropout(rate = 0.5) %>%
layer_dense(units = num_classes, activation = 'softmax')
summary(model);

Ardından, kayıp işlevini, optimize ediciyi ve değerlendirme metriğini belirterek modeli derliyoruz.
# compiling our model
model %>% compile(
loss = loss_categorical_crossentropy,
optimizer = optimizer_adadelta(),
metrics = c('accuracy')
)
# fitting the model(training it)
model_history <- model %
fit(x_train, y_train,
batch_size = batch_size,
epochs = epochs,
validation_data = list(x_val, y_val),
verbose = 1)
Model training in action.
#Model Testing
model %>% evaluate(xtest, ytest)
Loss and Accuracy.
Son olarak, modelimizi tekrar eğitebilmek ve test verilerinde gerçekten iyi çalışıyorsa devreye alabilmek için kaydediyoruz.
#saveRDS(model,"<filepath>/<UNI>_model.RDS")
saveRDS(model, "digit_classifier.rds")