0% found this document useful (0 votes)
28 views3 pages

Restricted Boltzmann Machine

The document outlines a Python program for implementing image augmentation using a deep restricted Boltzmann machine (RBM) on a dataset of handwritten digits. It details the steps including library installation, data loading, pixel value normalization, and the use of BernoulliRBM for training and Gibbs sampling. The program visualizes the augmented images after processing through the RBM.

Uploaded by

Kavitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views3 pages

Restricted Boltzmann Machine

The document outlines a Python program for implementing image augmentation using a deep restricted Boltzmann machine (RBM) on a dataset of handwritten digits. It details the steps including library installation, data loading, pixel value normalization, and the use of BernoulliRBM for training and Gibbs sampling. The program visualizes the augmented images after processing through the RBM.

Uploaded by

Kavitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

Ex.

No 7 : IMPLEMENT IMAGE AUGUMENTATION USING DEEP RBM

AIM: To write a python program to implement image augmentation using deep restricted
Boltzmann machine.

ALGORITHM:

1. Install the required libraries


2. Download the data set train.csv it contains images of hand written digits
3. This method simply gets the pixel values of the image
4. Use BernoulliRBM for reading the handwritten digits
5. Perform gibbs sampling for the digits

PROGRAM

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['image.cmap'] = 'gray'

def gen_mnist_image(X):
return np.rollaxis(np.rollaxis(X[0:200].reshape(20, -1, 28, 28),
0, 2), 1, 3).reshape(-1, 20 * 28)

## We are reading the handwritten digits


X_train = pd.read_csv("C:\\Users\\train.csv").values[:,1:]

## Doing Min-Max Scaling to convert the image pixel values from 0 to


255 range to 0 to 1
X_train = (X_train - np.min(X_train, 0)) / (np.max(X_train, 0) +
0.0001) # 0-1 scaling

plt.figure(figsize=(10,20))
plt.imshow(gen_mnist_image(X_train));
from sklearn.neural_network import BernoulliRBM
rbm = BernoulliRBM(n_components=100, learning_rate=0.01,
random_state=0, verbose=True)
rbm.fit(X_train)

[BernoulliRBM] Iteration 1, pseudo-likelihood = -119.88, time = 8.91s


[BernoulliRBM] Iteration 2, pseudo-likelihood = -104.69, time = 10.59s
[BernoulliRBM] Iteration 3, pseudo-likelihood = -97.89, time = 12.08s
[BernoulliRBM] Iteration 4, pseudo-likelihood = -93.42, time = 10.26s
[BernoulliRBM] Iteration 5, pseudo-likelihood = -89.87, time = 10.39s
[BernoulliRBM] Iteration 6, pseudo-likelihood = -87.95, time = 12.34s
[BernoulliRBM] Iteration 7, pseudo-likelihood = -86.71, time = 10.61s
[BernoulliRBM] Iteration 8, pseudo-likelihood = -84.56, time = 13.47s
[BernoulliRBM] Iteration 9, pseudo-likelihood = -83.56, time = 10.98s
[BernoulliRBM] Iteration 10, pseudo-likelihood = -82.36, time = 13.07s

BernoulliRBM(learning_rate=0.01, n_components=100, random_state=0,


verbose=True)

xx = X_train[:40].copy()
for ii in range(1000):
for n in range(40):
xx[n] = rbm.gibbs(xx[n])

## Objective of gibbs sampling

plt.figure(figsize=(10,20))
plt.imshow(gen_mnist_image(xx))

<matplotlib.image.AxesImage at 0x2069fa8b110>
xx = X_train[:40].copy()
for ii in range(10000):
for n in range(40):
xx[n] = rbm.gibbs(xx[n])

plt.figure(figsize=(10,20))
plt.imshow(gen_mnist_image(xx))

<matplotlib.image.AxesImage at 0x2069fb12ad0>

You might also like