Up 歩行脳NN のプログラムを改造 作成: 2026-10-29
更新: 2026-11-01

4足歩行ロボット > 進化型> 歩行脳 > プログラム > NNプログラムを改造

    歩行脳は,つぎのユニット/機能で構成される:
      ・歩行脳NN
      ・経験ログ処理 (記憶)
      ・パラメータ更新処理 (教師あり学習)

    したがって,NN のプログラム nn_brain.py に,「記憶」 「教師あり学習」 のコードを書き加えれば,歩行脳のプログラムが出来上がることになる。
    これを実際にやるとしよう。

    なお,nn_brain.py は,以下のようになっている:

    ################################# # nn_brain.py ################################# import torch from torch import nn import sys import json ######################### # class NN_Brain class NN_Brain(nn.Module):   def __init__(self):    super().__init__()    self.network = nn.Sequential(    # 入力は,つぎの5つの特徴量    #  last_gait, position, earth, visual, enegy    #  各 16 byte,合計 80 byte    nn.Linear(    80,    128    ),    nn.ReLU(),    nn.Linear(    128,    128    ),    nn.ReLU(),    # 出力は,gait_feature, 16 byte    #  16 byte    nn.Linear(    128,    16    )    )   ###################################   # サブルーチン   ###################################   #####################   # ストアからの入力の成形   #  入力は, stdin から   #  これを,NN への入力に成形   def nn_input(self):     # 入力を受ける     line = sys.stdin.readline()     data = json.loads(line)     last_gait_feat = torch.tensor(       [ data["last_gait"] ],       dtype=torch.float32     )     position_feat = torch.tensor(       [ data["position"] ],       dtype=torch.float32     )     earth_feat = torch.tensor(       [ data["earth"] ],       dtype=torch.float32     )     vision_feat = torch.tensor(       [ data["vision"] ],       dtype=torch.float32     )     energy_feat = torch.tensor(       [ data["energy"] ],       dtype=torch.float32     )     # NN用入力     x = torch.cat(      [       last_gait_feat       position_feat,       earth_feat,       vision_feat,       energy_feat,      ],      dim=1     )     return x   #####################   # NN の入出力   def forward(self, x):    y = self.network(x)    return y ######################### # main def main():   # object 化   nn_brain = NN_Brain()   # 入力値   x = nn_brain.nn_input()   # 出力値   y = nn_brain.forward(x)   # 出力 (stdout へ)   print( y ) ################## # プログラムの起動 if __name__ == '__main__':   main()

    備考. ストアから NN への入力   # NN への入力   nn_brain_input = {     "last_gait": self.last_gait.__dict__     "position": self.position.__dict__,     "visual": self.visual.__dict__,     "earth": self.earth.__dict__,     "energy": self.energy.__dict__,   }   # 入力を JSON にして送る   input_json = json.dumps(brain_input)   self.nn.stdin.write(input_json + "\n")   self.nn.stdin.flush()