আমার নিজের প্রশ্নের উত্তর দিতে, আমি আরবিএমগুলির জন্য আরে একটি ছোট প্যাকেজ লিখেছি: https://github.com/zachmayer/rbm
এই প্যাকেজটি এখনও তীব্র বিকাশের মধ্যে রয়েছে এবং আরবিএম সম্পর্কে আমি খুব কমই জানি, তাই আপনার যে কোনও প্রতিক্রিয়া (এবং অনুরোধগুলি টানুন!) আমি স্বাগত জানাব। আপনি ডিভটোলগুলি ব্যবহার করে প্যাকেজটি ইনস্টল করতে পারেন :
devtools:::install_github('zachmayer/rbm')
library(rbm)
?rbm
?rbm_gpu
?stacked_rbm
কোডটি অ্যান্ড্রু ল্যান্ডগ্রাফের আর এবং অ্যাডউইন চেনের পাইথনে বাস্তবায়নের অনুরূপ, তবে আমি ফাংশনটি বেস আর তে পিসিএ ফাংশনের অনুরূপ বলে লিখেছি এবং স্ট্যাকিংয়ের কার্যকারিতা অন্তর্ভুক্ত করেছি। আমি মনে করি এটি ডার্ক প্যাকেজের চেয়ে কিছুটা বেশি ব্যবহারকারী বান্ধব , যা আমি কীভাবে ব্যবহার করতে পারি তা কখনই বুঝতে পারি না (এটি CRAN থেকে সরানোর আগেও)।
আপনার যদি gputools প্যাকেজ ইনস্টল করা থাকে তবে আপনি rbm_gpu ফাংশন সহ ম্যাট্রিক্স অপারেশনের জন্য আপনার GPU ব্যবহার করতে পারেন। এটি জিনিসগুলিকে অনেক গতি দেয়! তদ্ব্যতীত, আরবিএমের বেশিরভাগ কাজ ম্যাট্রিক্স অপারেশনের মাধ্যমে সম্পন্ন হয়, সুতরাং কেবলমাত্র একটি ভাল বিএলএএস ইনস্টল করা যেমন ওপেনবিএলএসও জিনিসগুলিকে অনেক গতি দেয়।
আপনি যখন এডউইনের উদাহরণ ডাটাসেটে কোডটি চালাবেন তখন কী হয় তা এখানে:
set.seed(10)
print('Data from: https://github.com/echen/restricted-boltzmann-machines')
Alice <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
Bob <- c('Harry_Potter' = 1, Avatar = 0, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #SF/fantasy fan, but doesn't like Avatar.
Carol <- c('Harry_Potter' = 1, Avatar = 1, 'LOTR3' = 1, Gladiator = 0, Titanic = 0, Glitter = 0) #Big SF/fantasy fan.
David <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
Eric <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 0, Glitter = 0) #Oscar winners fan, except for Titanic.
Fred <- c('Harry_Potter' = 0, Avatar = 0, 'LOTR3' = 1, Gladiator = 1, Titanic = 1, Glitter = 0) #Big Oscar winners fan.
dat <- rbind(Alice, Bob, Carol, David, Eric, Fred)
#Fit a PCA model and an RBM model
PCA <- prcomp(dat, retx=TRUE)
RBM <- rbm_gpu(dat, retx=TRUE, num_hidden=2)
#Examine the 2 models
round(PCA$rotation, 2) #PCA weights
round(RBM$rotation, 2) #RBM weights