
ЛР №5 Ограниченные машины Больцмана
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
Факультет Информационных систем и технологий
Кафедра Информационных управляющих систем
Направление: 09.03.02 Информационные системы и технологии
Профиль: Дизайн графических и пользовательских интерфейсов информационных систем
ОТЧЕТ
к лабораторной работе № 5:
«Ограниченные машины Больцмана»
по дисциплине «Нейросетевые технологиий»
Выполнил:
Студент группы ИСТ-931
Гетманченко П.А. «_04_»__марта__ 2022 г.
Принял:
преп. каф. ИУС
Капитоненко В.В. «_04_»__марта__ 2022 г.
Санкт-Петербург
2022 г
СОДЕРЖАНИЕ
ЦЕЛИ РАБОТЫ 3
ХОД РАБОТЫ 4
Задание 4
Листенинг 4
ВЫВОД 7
ЦЕЛИ РАБОТЫ
Цели работы:
- построить ограниченную машину Больцмана для понижения размерности обучающей выборки.
ХОД РАБОТЫ
Задание
Построить ограниченную машину Больцмана для понижения размерности обучающей выборки.
Листенинг
# Для начала нужно указать путь, где находятся картинки
path_other <- "C:/.../картинки"
dir(path_other)
image_conversion <- function(dir_path, width, height){
# Формирование списка файлов с изображениями из директория
images_names <- list.files(dir_path)
# Визуализация процесса обработки изображения
print(paste("Обработка", length(images_names), "изображений"))
# Функция обработки изображения
image_processing <- pblapply(images_names, function(imgnames){
# Чтение изображения
img <- readImage(file.path(dir_path, imgname))
# Изменение размеров
img_resized <- resize(img, w = width, h = height)
# Преобразование в чёрно-белое
img_gray <- channel(img_resized, "gray")
# Получение матрицы размера weight X height
img_matrix <- img_gray@.Data
img_matrix <- rotate(img_matrix, 90)
# Запись, как вектор
img_vector <- as.vector(t(img_matrix))
return(img_vector)
})
# Формирование матрицы всех изображений из директория
img_matrix <- do.call(rbind, image_processing)
return(img_matrix)
}
# Функция печати реконструированных изображений
ResultRBM <- function(test, model, layers = 1) {
if (!missing(layers)) {}
if (!is.null(dim(test))) {}
if (any(!is.numeric(test))) {}
if (any(!is.finite(test))) {}
if (length(model) != layers) {}
test <- matrix(test, nrow = 1)
V <- cbind(1, test[1, , drop = FALSE])
if (missing(layers)) {}
else {}
return(matrix(V.rec[, -1], nrow = sqrt(ncol(test))))
}
library(RBM)
library(EBImage)
library(pbapply)
# Подготовка обучающей выборки
trainData <- image_conversion("Different", 100, 100)
# Обучение ограниченной машины Больцмана
set.seed(55)
mod <- RBM(trainData, n.iter = 400, n.hidden = 196)
# Подготовка для печати 5 строк по 10 изображений (50 картинок)
par(mar=c(1,1,1,1))
par(mfrow=c(5,10))
# Реконструкция 10 реконструированных изображений (height = 196)
for (i in 1:10)
image(ResultRBM(trainData[i, ], model = mod))
# Обучение стека ограниченных машин Больцмана
set.seed(55)
modDifferent <- StackRBM(x = trainData, n.iter = 400, layers = c(392, 196, 98), learning.rate = 0.1, size.minibatch = 10, lambda = 0.1, momentum = 0.5)
# Реконструкция 10 реконструированных изображений (hidden = 98)
for (i in 1:10)
image(ResultRBM(trainData[i, ], model = modDifferent, layers = 3))
Должно было получиться что-то похожее на рисунке 1:
Рисунок 1 – примерный результат
ВЫВОД
При выполнении лабораторной работы №5:
- построена ограниченная машина Больцмана для понижения размерности обучающей выборки.