はじめに
Golangプログラミング言語を学び始めて、私はこの言語が機械学習で何ができるのだろうと思いました。 次に、この言語のNSのコード例を探し始めました。 残念ながら、賢明なものは見つかりませんでした。 そして、 この記事のGOの下でNAを書き直すことにしました。
ニューラルネットワーク
ニューラルネットワークのタスクは、3つのパラメーターに基づいてキャラクターに何をするかを決定することです。
- 健康の量(1〜100)
- 武器の存在
- 敵の数
結果に応じて、次のいずれかの決定を行うことができます。
- 攻撃する
- こっそり
- 逃げる
- 何もしない
例:
| 健康 | 武器 | 敵 | 解決策 | 
| 50 | 1 | 1 | 攻撃する | 
| 90 | 1 | 2 | 攻撃する | 
| 80 | 0 | 1 | 攻撃する | 
| 30 | 1 | 1 | こっそり | 
| 60 | 1 | 2 | こっそり | 
| 40 | 0 | 1 | こっそり | 
| 90 | 1 | 7 | 逃げる | 
| 60 | 1 | 4 | 逃げる | 
| 10 | 0 | 1 | 逃げる | 
| 60 | 1 | 0 | 何もしない | 
| 100 | 0 | 0 | 何もしない | 
準備する
GoNNライブラリを使用します。
インストール:
go get github.com/fxsjy/gonn/gonn
さあ始めましょう!
開始するには、インポートを設定しましょう:
 import ( "fmt" "github.com/fxsjy/gonn/gonn" )
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      それでは、ニューラルネットワークの作成を始めましょう。
 func CreateNN() { //    3   (   ), // 16    // 4   (   ) nn := gonn.DefaultNetwork(3, 16, 4, false) //    : // 1  -   (0.1 - 1.0) // 2  -   (0 - , 1 - ) // 3  -   input := [][]float64 { []float64{0.5, 1, 1}, []float64{0.9, 1, 2}, []float64{0.8, 0, 1}, []float64{0.3, 1, 1}, []float64{0.6, 1, 2}, []float64{0.4, 0, 1}, []float64{0.9, 1, 7}, []float64{0.6, 1, 4}, []float64{0.1, 0, 1}, []float64{0.6, 1, 0}, []float64{1, 0, 0} } //   "" -  ,    target := [][]float64 { []float64{1, 0, 0, 0}, []float64{1, 0, 0, 0}, []float64{1, 0, 0, 0}, []float64{0, 1, 0, 0}, []float64{0, 1, 0, 0}, []float64{0, 1, 0, 0}, []float64{0, 0, 1, 0}, []float64{0, 0, 1, 0}, []float64{0, 0, 1, 0}, []float64{0, 0, 0, 1}, []float64{0, 0, 0, 1} } //    . //   - 100000 nn.Train(input, target, 100000) //     . gonn.DumpNN("gonn", nn) }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      次に、最大の重みを持つニューロンの応答を選択する関数を作成する必要があります。
 func GetResult(output []float64) string { max := -99999 pos := -1 //       . for i, value := range output { if (value > max) { max = value pos = i } } // ,    ,  . switch pos { case 0: return "" case 1: return "" case 2: return "" case 3: return "  " } return "" }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      そして、メイン関数を書きます。
 func main() { CreateNN() //    . nn := gonn.LoadNN("gonn") //    : // hp -  (0.1 - 1.0) // weapon -   (0 - , 1 - ) // enemyCount -   var hp float64 = 0.7 var weapon float64 = 1.0 var enemyCount float64 = 1.0 //     ( ) out := nn.Forward([]float64{ hp, weapon, enemyCount }) //    . fmt.Println(GetResult(out)) }
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      この場合、答えは「攻撃」です。
おわりに
ご覧のとおり、Golangでニューラルネットワークを操作するプロセスは、他のプログラミング言語と同じです。 このネットワークを試して、独自のネットワークを作成してください!