Example #1
0
def main():
    i_gen = InputGenerator(0, T, NUM_TIME_STEPS)
    data = i_gen.generate_sin(amplitude=AMPLITUDE)
    num_train = int(len(data) * RATIO_TRAIN)
    train_data = data[:num_train]

    model = ReservoirNetWork(inputs=train_data,
                             num_input_nodes=NUM_INPUT_NODES,
                             num_reservoir_nodes=NUM_RESERVOIR_NODES,
                             num_output_nodes=NUM_OUTPUT_NODES,
                             leak_rate=LEAK_RATE)

    model.train()  # 訓練
    train_result = model.get_train_result()  # 訓練の結果を取得

    num_predict = int(len(data[num_train:]))
    predict_result = model.predict(num_predict)

    t = np.linspace(0, T, NUM_TIME_STEPS)
    ## plot
    plt.plot(t, data, label="inputs")
    plt.plot(t[:num_train], train_result, label="trained")
    plt.plot(t[num_train:], predict_result, label="predicted")
    plt.axvline(x=int(T * RATIO_TRAIN), label="end of train",
                color="green")  # border of train and prediction
    plt.legend()
    plt.title("Echo State Network Sin Prediction")
    plt.xlabel("time[ms]")
    plt.ylabel("y(t)")
    plt.show()
    print(model.test())
Example #2
0
def main():
    print(NUM_TIME_STEPS)
    ing = InputGenerator(0,T,NUM_TIME_STEPS)

    train_data = ing.generate_sin()
    num_train = int(len(train_data) * RATIO_TRAIN)
    print(train_data)

    target_data = np.sign(train_data)
    num_target = int(len(target_data) * RATIO_TRAIN)
    print(target_data)



    model = ReservoirNetWork(inputs=train_data, #ReservoirNetwork.pyを参照
        outputs_target = target_data,
        num_input_nodes=NUM_INPUT_NODES, 
        num_reservoir_nodes=NUM_RESERVOIR_NODES, 
        num_output_nodes=NUM_OUTPUT_NODES, 
        leak_rate=LEAK_RATE)

    model.train() # 訓練
    train_result = model.get_train_result() # 訓練の結果を取得

    num_predict = int(len(train_data[num_target:]))
    predict_result = model.predict(num_predict)

    t = np.linspace(0,T,NUM_TIME_STEPS)
    ## plot
    plt.plot(t, train_data, label="inputs")
    plt.plot(t[:num_train], train_result[:num_train], label="trained")
    plt.plot(t[num_target:], predict_result, label="predicted")
    plt.axvline(x=int(T * RATIO_TRAIN), label="end of train", color="green") # border of train and prediction
    plt.legend()
    plt.title("Echo State Network TEST Prediction")
    plt.xlabel("time[ms]")
    plt.ylabel("y(t)")
    plt.show()