Esempio n. 1
0
    def __init__(self,
                 point_reward=None,
                 scope_limit=1,
                 traning_count=2,
                 learning_rate=0.1):
        '''
        初期化する

        Args:
            point_reward:         壁、スタート地点、ゴール地点の報酬
            scope_limit:          深層ボルツマンマシンによる探索範囲
                                  (例) 距離的な概念であるため
                                       1なら上下左右斜め1個分隣のマスが範囲になる
            traning_count:        深層ボルツマンマシンの訓練回数
            learning_rate:        深層ボルツマンマシンの学習率

        '''
        if point_reward is not None:
            self.__point_reward = point_reward
        self.__scope_limit = scope_limit

        neuron_count = self.__decide_neuron_count(scope_limit)
        self.__dbm = DeepBoltzmannMachine(DBMMultiLayerBuilder(),
                                          [neuron_count, 3, 1],
                                          SigmoidFunction(),
                                          ContrastiveDivergence(),
                                          learning_rate)
        self.__traning_count = traning_count
Esempio n. 2
0
    # 深層ボルツマンマシンの引数の形式に前処理する
    traning_y = traning_y.reshape((len(traning_y), 1))
    data_arr = np.hstack((traning_y, traning_x))
    traning_data_matrix = list(data_arr)

    test_y = test_y.reshape((len(test_y), 1))
    data_arr = np.hstack((test_y, test_x))
    test_data_matrix = list(data_arr)

    evaluate_data_list = []
    
    # 深層ボルツマンマシンを構築する(第二引数の各層のニューロンの個数はデモのためアトランダムに規定)
    dbm = DeepBoltzmannMachine(
        DBMMultiLayerBuilder(),
        [len(traning_data_matrix[0]), 8, 6, 4, 2],
        LogisticFunction(),
        ContrastiveDivergence(),
        0.05
    )
    dbm.learn(traning_data_matrix, traning_count=1)
    evaluate_dict = dbm.evaluate_bool(test_data_matrix)
    evaluate_data_list.append(evaluate_dict)

    dbm = DeepBoltzmannMachine(
        DBMMultiLayerBuilder(),
        [len(traning_data_matrix[0]), 8, 6, 4],
        LogisticFunction(),
        ContrastiveDivergence(),
        0.05
    )
    dbm.learn(traning_data_matrix, traning_count=1)