自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用一盤殘局帶你了解人工神經(jīng)網(wǎng)絡(luò)算法

人工智能 深度學(xué)習(xí) 算法
志斌現(xiàn)在手頭上有一個國際象棋的殘局,它是黑方只剩下一個王,白方剩一個兵和一個王?,F(xiàn)在志斌已知它有兩種可能的結(jié)局,即白方將死黑方獲勝,或者和棋。那么結(jié)局到底是什么呢?

[[431963]]

本文轉(zhuǎn)載自微信公眾號「志斌的python筆記」,作者安可 。轉(zhuǎn)載本文請聯(lián)系志斌的python筆記公眾號。

大家好,我是志斌~

志斌現(xiàn)在手頭上有一個國際象棋的殘局,它是黑方只剩下一個王,白方剩一個兵和一個王?,F(xiàn)在志斌已知它有兩種可能的結(jié)局,即白方將死黑方獲勝,或者和棋。

那么結(jié)局到底是什么呢?接下來讓我們用深度學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)算法,來給大家一個答案~

一.規(guī)則介紹

在進(jìn)行程序編譯之前,我們需要先簡單的了解一下國際象棋的下棋規(guī)則,規(guī)則如下:

棋盤大小為8*8,各有黑色和白色棋子16個,分別是王:1個,后:1個,車:2個,象:2個,馬:2個,兵:8個。

兵:只能向前直走(不能后退,這點(diǎn)和中國象棋類似),每次行棋只能走一格。但是,國際象棋的兵走第一步時,可以走一格或走兩格。兵的吃子方法與行棋方向不一樣,它是直走斜吃,即如果兵的前斜進(jìn)一格內(nèi)有對方棋子,就可以吃掉它,從而占據(jù)該格位置。

王:則是橫、直、斜都可以走,但每次限走一步。不過,和中國象棋相比,王是不可以送吃的,即任何被敵方控制的格子,己方王都不能走進(jìn)去。否則,算“送王”犯規(guī)。累計三次犯規(guī)就要判負(fù)。

勝負(fù):當(dāng)吃掉對方的最高統(tǒng)帥 王 時則勝,當(dāng)逼對方不能走棋了,則算和。

二.解決方法

1讀取訓(xùn)練集

對krkopt.data訓(xùn)練集進(jìn)行讀取,代碼如下:

  1. with open('krkopt.data','r'as f: 
  2.     lines = f.readlines() 
  3.     data = np.zeros((28056,6),dtype=float
  4.     label = np.zeros((28056,2),dtype=float

讀取結(jié)果展示:

上面每一行數(shù)據(jù)都是一個訓(xùn)練樣本,我們以第一行的數(shù)據(jù)為例來進(jìn)行分析,如下圖:

a1,b3,c2給出了三個棋子的坐標(biāo),黑方的王在如圖a1的位置,白方的王在如圖b3的位置,白方的兵在如圖c2 的位置。這時黑方的王處于無路可走的狀態(tài),是和棋,因此,最后draw意為和棋。假設(shè)數(shù)據(jù)中最后標(biāo)簽為six,意為白方最多走6步可將死黑方。

2開始訓(xùn)練

首先安裝訓(xùn)練所需要調(diào)用的Python庫,

  1. pip install numpy 
  2. pip install sklearn 
  3. pip install matplotlib 

然后將整個數(shù)據(jù)集分為三份,代碼如下:

  1. ratioTraining = 0.4 #訓(xùn)練數(shù)據(jù)集40%:利用訓(xùn)練數(shù)據(jù)集調(diào)整神經(jīng)網(wǎng)路的參數(shù) 
  2. ratioValidation = 0.1 #驗證數(shù)據(jù)集10%:用于驗證調(diào)整是好是壞,從而決定程序是否退出 
  3. ratioTesting = 0.5 #測試數(shù)據(jù)集50%:訓(xùn)練結(jié)束后,用于總體測出神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果 

接下來使用Scikit-learn中的Scaler類,采用減掉均值除以方差的方法對標(biāo)準(zhǔn)進(jìn)行歸一化,代碼如下:

  1. scaler.transform(xTraining) 
  2. scaler.transform(xTexting) 
  3. scaler.transform(xValidation) 

創(chuàng)建神經(jīng)網(wǎng)絡(luò),代碼如下:

其中:layer=[6, 20, 20, 20, 2]輸入是6個維度,輸出是2個維度,共3層神經(jīng)網(wǎng)絡(luò),每層20個神經(jīng)元

  1. active_function='relu'神經(jīng)網(wǎng)絡(luò)的激活函數(shù) 
  2. learning_rate=0.01學(xué)習(xí)率α 
  3. batch_normalization=1歸一化操作 
  4. objective_function='Cross Entropy'目標(biāo)函數(shù) 

訓(xùn)練開始后,我們發(fā)現(xiàn)COST損失函數(shù)是在持續(xù)下降,同時識別率Accuracy,在慢慢上升,無限接近于1。

代碼如下:

經(jīng)過上面的分析,我們發(fā)現(xiàn)白棋勝的幾率很高,幾乎接近1了。

三.小結(jié)

1. 本文利用一局國際象棋殘局勝負(fù)為例,帶大家實操人工神經(jīng)網(wǎng)絡(luò)算法,希望大家回去多多練習(xí)。

2. 本文僅供學(xué)習(xí)參考,不做它用。

專欄作者:安可,一名在讀研究生,研究領(lǐng)域為強(qiáng)化學(xué)習(xí),多智能體協(xié)同。喜歡鉆研,熱愛學(xué)習(xí),樂于分享,最重要的還是一位漂亮小姐姐哦~

 

責(zé)任編輯:武曉燕 來源: 志斌的python筆記
相關(guān)推薦

2020-08-20 07:00:00

深度學(xué)習(xí)人工智能技術(shù)

2021-12-15 07:24:57

人工神經(jīng)網(wǎng)絡(luò)翻譯

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2017-11-29 14:41:48

神經(jīng)網(wǎng)絡(luò)遞歸神經(jīng)網(wǎng)絡(luò)RNN

2020-12-08 20:20:15

神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2024-08-22 08:21:10

算法神經(jīng)網(wǎng)絡(luò)參數(shù)

2025-01-08 17:20:00

pytho數(shù)據(jù)分組itertools

2020-08-14 10:20:49

神經(jīng)網(wǎng)絡(luò)人工智能池化層

2020-09-09 10:20:48

GraphSAGE神經(jīng)網(wǎng)絡(luò)人工智能

2021-06-29 09:53:06

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)圖形

2024-09-24 07:28:10

2020-05-11 13:44:38

神經(jīng)網(wǎng)絡(luò)人工智能深度學(xué)習(xí)

2024-11-11 00:00:02

卷積神經(jīng)網(wǎng)絡(luò)算法

2024-12-04 10:33:17

2025-04-28 09:53:40

2020-06-05 15:48:26

網(wǎng)絡(luò)安全技術(shù)漏洞

2020-12-21 08:00:00

人工智能深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2017-07-18 10:38:27

人工神經(jīng)網(wǎng)絡(luò)矩陣模型

2017-11-30 18:05:18

2024-10-17 13:05:35

神經(jīng)網(wǎng)絡(luò)算法機(jī)器學(xué)習(xí)深度學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號