Memahami Deep Learning dengan R dan TensorFlow
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<-100for(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.