MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / rbm_demo

Function rbm_demo

examples/machine_learning/rbm.cpp:133–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131};
132
133int rbm_demo(bool /*console*/, int perc) {
134 printf("** ArrayFire RBM Demo **\n\n");
135
136 array train_images, test_images;
137 array train_target, test_target;
138 int num_classes, num_train, num_test;
139
140 // Load mnist data
141 float frac = (float)(perc) / 100.0;
142 setup_mnist<true>(&num_classes, &num_train, &num_test, train_images,
143 test_images, train_target, test_target, frac);
144
145 dim4 dims = train_images.dims();
146
147 int feature_size = train_images.elements() / num_train;
148
149 // Reshape images into feature vectors
150 array train_feats = moddims(train_images, feature_size, num_train).T();
151 array test_feats = moddims(test_images, feature_size, num_test).T();
152
153 train_target = train_target.T();
154 test_target = test_target.T();
155
156 rbm network(train_feats.dims(1), 2000);
157
158 network.train(train_feats,
159 0.1, // learning rate
160 15, // num epochs
161 100, // batch size
162 1, // k
163 true);
164
165 // Test reconstructed images
166 for (int ii = 0; ii < 5; ii++) {
167 array in = test_feats(ii, span);
168 array res, tmp;
169
170 network.gibbs_vhv(res, tmp, in);
171
172 in = moddims(in, dims[0], dims[1]);
173 res = moddims(res, dims[0], dims[1]);
174
175 in = round(in);
176 res = round(res);
177
178 printf("Reconstructed Error for image %2d: %.4f\n", ii,
179 sum<float>(abs(in - res)) / feature_size);
180 }
181
182 return 0;
183}
184
185int main(int argc, char **argv) {
186 int device = argc > 1 ? atoi(argv[1]) : 0;

Callers 1

mainFunction · 0.85

Calls 8

moddimsFunction · 0.85
roundFunction · 0.85
TMethod · 0.80
gibbs_vhvMethod · 0.80
absFunction · 0.50
dimsMethod · 0.45
elementsMethod · 0.45
trainMethod · 0.45

Tested by

no test coverage detected