<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def predict_distance(self, X, batch_size=1, show_progressbar=False):
 """Predict distances to some input data."""

        X = self._check_input(X)

        X_shape = reduce(np.multiply, X.shape[:-1], 1)

        batched = self._create_batches(X, batch_size, shuffle_data=False)

        activations = []

        activation = self._init_prev(batched)

        for x in tqdm(batched, disable=not show_progressbar):
            activation = self.forward(x, prev_activation=activation)[0]
            activations.append(activation)

        act = np.asarray(activations, dtype=np.float64).transpose((1, 0, 2))
        act = act[:X_shape]
        return act.reshape(X_shape, self.num_neurons)