def example_0(): # learns to repeat simple sequence from random inputs np.random.seed(0) # parameters for input data dimension and lstm cell count mem_cell_ct = 100 x_dim = 50 y_list = [-0.8333333333, 0.33333, 0.166666667, -80.8] input_val_arr = [np.random.random(x_dim) for _ in y_list] lstm_param = LstmParam(mem_cell_ct, x_dim) lstm_net = LstmNetwork(lstm_param) lstm_param2 = LstmParam(mem_cell_ct, mem_cell_ct) lstm_net2 = LstmNetwork(lstm_param2) loss = ToyLossLayer(mem_cell_ct) for cur_iter in range(2000): # print(y_list) print("iter", "%2s" % str(cur_iter), end=": ") for ind in range(len(y_list)): lstm_net.x_list_add(input_val_arr[ind]) lstm_net2.x_list_add(lstm_net.lstm_node_list[ind].state.h) print("y_pred = [" + ", ".join([ "% 2.5f" % loss.value(lstm_net2.lstm_node_list[ind].state.h) for ind in range(len(y_list)) ]) + "]", end=", ") lossv = lstm_net2.y_list_is(y_list, loss) lstm_net.y_list_is2(lstm_net2) print("loss:", "%.3e" % lossv) lstm_param2.apply_diff(lr=0.1) lstm_param.apply_diff(lr=0.1) lstm_net2.x_list_clear() lstm_net.x_list_clear()