def sample(parameters, chars_to_encoding): W_aa = parameters['W_aa'] W_ax = parameters['W_ax'] W_ya = parameters['W_ya'] b_y = parameters['b_y'] b = parameters['b'] vocab_size = b_y.shape[0] n_a = W_aa.shape[1] x = np.zeros((vocab_size,)) a_prev = np.zeros((n_a,)) indices = [] idx = -1 counter = 0 newline_character = chars_to_encoding['n'] while (idx != newline_character and counter != 50): a = np.tanh(np.dot(W_ax,x)+np.dot(W_aa,a_prev)+np.ravel(b)) z = np.dot(W_ya,a) + np.ravel(b_y) y = softmax(z) idx = np.random.choice(list(chars_to_encoding.values()), p=np.ravel(y)) indices.append(idx) x = np.zeros((vocab_size,)) x[idx] = 1 a_prev = a counter +=1 if (counter == 50): indices.append(chars_to_encoding['n']) return indices