def compute_reconstructions(rbm, v_data, fit, n_recon=10, vertical=False): sampler = fit.DrivenSequentialMC(rbm) data_state = State.from_visible(v_data, rbm) sampler.set_positive_state(data_state) sampler.update_positive_state(1) v_model = rbm.deterministic_iteration(1, sampler.pos_state).units[0] idx = numpy.random.choice(range(len(v_model)), n_recon, replace=False) grid = numpy.array( [[be.to_numpy_array(v_data[i]), be.to_numpy_array(v_model[i])] for i in idx]) if vertical: return grid else: return grid.swapaxes(0, 1)