Memahami Deep Learning dengan R dan TensorFlow

Siti Hajrah
4 min readJan 10, 2021

--

Assalamualaikum Wr. Wb.

Apa itu Deep Learning ?

Deep Learning adalah salah satu cabang Machine Learning(ML) yang menggunakan Deep Neural Network untuk menyelesaikan permasalahan pada domain Machine Learning atau salah satu cabang dari ilmu Pembelajaran mesin (Machine Learning) yang terdiri algoritme pemodelan abstraksi tingkat tinggi pada data menggunakan sekumpulan fungsi transformasi non-linear yang ditata berlapis-lapis dan mendalam.

Apa itu TensorFlow ?

Tensorflow adalah sebuah framework komputasional untuk membuat model machine learning. TensorFlow menyediakan berbagai toolkit yang memungkinkan Anda membuat model pada tingkat abstraksi yang Anda sukai. Anda dapat menggunakan API dengan tingkat yang lebih rendah untuk membuat model dengan menentukan serangkaian operasi matematis.

Cara Penerapan Deep Learning dan TensorFlow dengan Software R dan TensorFlow :

Pertama download gambarnya terlebih dahulu.

Setelah itu kita memanggil packagenya. jika belum ada maka packagenya di instal dulu.

install.packages("BiocManager")
BiocManager::install("EBImage")
library(keras)
library(tensorflow)
library(EBImage)

Untuk Melihat packages sudah terinstall atau belum dapat menggunakan syntax :

search()
ls(3)

Kemudian memanggil gambar dan membuat folder baru untuk menyimpan hasil.

setwd("D:\\KULIAH\\SEMESTER 5\\Trending Topic On Statistics\\gambar\\")
save_in<-("D:\\KULIAH\\SEMESTER 5\\Trending Topic On Statistics\\hasil\\") #tempat simpan gambar resize

Melakukan resize ukuran gambar supaya gambar yang digunakan memiliki ukuran yang sama.

gambar<-list.files()
w<-100
h<-100
for(i in 1:length(gambar))
{result<-tryCatch({
imgname<-gambar[i]
img<-readImage(imgname)
img_resize<-resize(img,w=w,h=w)
path<-paste(save_in, imgname,sep="")
writeImage(img_resize,path,quality=70)
print(paste("done",i,sep=""))
},
error=function(e){print(e)}
)}

Kemudian hasil gambar yang sudah di resize ukurannya disimpan dengan menggunakan sintaks :

setwd("D:\\KULIAH\\SEMESTER 5\\Trending Topic On Statistics\\hasil\\")
gambar2<-list.files()
gambar2

Melihat struktur data, hasil dan gambar dimensi.

gambar2<-lapply(gambar,readImage)
str(gambar2)
display(gambar2[[3]])
dim(gambar2[[3]])

Membentuk data training dan data testing.

train<-gambar2[c(1:4,7:10)]
test<-gambar2[c(5:6,11:12)]
train[[5]]
display(train[[5]])

Menyimpan data dalam format csv.

write.csv(train[[5]],"D:\\KULIAH\\SEMESTER 5\\Trending Topic On Statistics\\hasil\\datatrain.csv")

Melakukan resize ulang ukuran gambar.

display(train[[2]])
par(mfrow=c(2,4))
for (i in 1:8) plot(train[[i]])
for(i in 1:8){train[[i]]<-resize(train[[i]],32,32)}
for(i in 1:8){test[[i]]<-resize(train[[i]],32,32)}

Mengkombinasi data training dan data testing.

train<-combine(train)
x<-tile(train,8)
display(x,title='gambar')
dim(train)
test<-combine(test)
y<-tile(test,4)
dim(test)
dim(train)

Menyusun ulang data training dan data testing.

train<-aperm(train,c(4,1,2,3))
test<-aperm(test,c(4,1,2,3))
dim(train)
dim(test)

Melakukan klasifikasi pada data.

trainy<-c(rep(0,4),rep(1,4))
testy<-c(rep(0,4),rep(1,4))
trainy
testy

Membuat label dari target.

trainLabels<-to_categorical(trainy)
testLabels<-to_categorical(testy)
trainLabels
testLabels

Selanjutnya membuat model dari hasil klasifikasi.

model <- keras_model_sequential()
model%>%
layer_conv_2d(filters = 32,
kernel_size = c(3,3),
activation = "relu",
input_shape = c(32, 32, 4))%>%
layer_conv_2d(filters = 32,
kernel_size = c(3,3),
activation = "relu")%>%
layer_max_pooling_2d(pool_size = c(2,2))%>%
layer_dropout(rate = 0.01)%>%
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.01)%>%
layer_flatten()%>%
layer_dense(units = 256, activation = "relu")%>%
layer_dropout(rate = 0.01)%>%
layer_dense(units = 2, activation = "softmax")%>%
compile(loss = "categorical_crossentropy",
optimizer = optimizer_sgd(lr = 0.01, decay = 1e-06,
momentum = 0.9,
nesterov = T),
metrics = c('accuracy'))
summary(model)

Proses perhitungan model dari hasil klarifikasi.

proses <- model%>%
fit(train,
trainLabels,
epoch = 50,
batch_size = 32,
validation_split = 0.2)
plot(proses)

Kemudian melakukan evaluasi tingkat keakuratan data training.

model%>%evaluate(train, trainLabels)
pred <- model%>%predict_classes(train)
pred

Dari Output diatas , diketahui tingkat keakuratan data training sebesar 0. 875 dengan nilai loss sebesar 0.9534. Dan di prediksi masih terdapat 5 data miss klasifikasi.

Membuat tabel validasi.

table(Predicted = pred, Actual = trainy)

Output diatas menjelaskan mengenai tabel validasi data training . Diperoleh data target sebesar 8 dari data training. Diketahui data training yang masuk klasifikasi 0 dan tepat masuk klasifikasi 0 terdapat 4 data. Dan data yang masuk klasifikasi 1 dan tepat masuk klasifikasi 1 terdapat 3 data. Sedangkan miss klasifikasi atau data training yang terprediksi masuk klasifikasi 0 namun masuk klasifikasi 1 terdapat sebanyak 1data.

Selanjutnya melihat nilai probabilitas.

prob <- model%>%predict_proba(train)
cbind(prob, Predicted_class = pred, Actual = trainy)

Kemudian mengevaluasi tingkat keakuratan data testing.

model%>%evaluate(test, testLabels)
pred <- model%>%predict_classes(test)

Dari Output diatas , diketahui tingkat keakuratan data testing sebesar 0. 875 dengan nilai loss sebesar 0.9534.

Wassalamualaikum Wr. Wb.

--

--

Siti Hajrah
Siti Hajrah

Written by Siti Hajrah

Statistika - Universitas Islam Indonesia

No responses yet