Добавил:
tg: @petmanchenko Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР №5 Ограниченные машины Больцмана

.docx
Скачиваний:
12
Добавлен:
02.02.2025
Размер:
183.12 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

Факультет Информационных систем и технологий

Кафедра Информационных управляющих систем

Направление: 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:

- построена ограниченная машина Больцмана для понижения размерности обучающей выборки.