iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

嗨,各位。廢廢必須說一件難過的事,由於廢廢的畢業專題快難產了,所以從今天開始會將重心轉移到趕工畢業專題。之前看廢廢筆記的各位,我必須說聲抱歉,以後不會有小筆記了。/images/emoticon/emoticon02.gif
今天會開始記錄專題進度,來講一下目前進度吧!
我們使用的是CNN來進行撲克遊戲,目前已將資料集建好,現在是要將已整理好的資料格式由一維轉為三維來進行訓練。

經過廢廢的研究了解到,依照常規的input圖片格式來看,假設今天有1000張大小為28*28,且是灰色的圖片,則input的格式是reshape(1000,28,28,1),1代表的是圖片顏色,通道數又或者稱為圖片的深度,如果今天是彩色,則RGB通道數為3,所一張圖片代表一個三維矩陣。

現在蒐集了87萬筆的牌局資料,其格式為
[strength, flop0, flop1, flop2, flop3, flop4, hand0, hand1, hands_level, player1_chips, player2_chips, 0, 1, 1, 0]
我要將此資料轉為一個三維矩陣,比如strength會變成一個二維矩陣,最後總共會有15個二維矩陣,再把這些二維矩陣疊加成一個三維矩陣,就像圖一所示:
https://ithelp.ithome.com.tw/upload/images/20220921/20145527e5Q1kug34K.jpg(圖一)

目前我也成功做出來了70筆可以,現在問題是87萬有點多電腦快炸裂了,還會有exception no description警示,現在正在解決中。

#x = np.array([[0, 50, -1, -1, -1, -1, 50, 6, 4, 89.9, 37.9, 0, 1, 1, 0], [0, -1, -1, -1, -1, -1, 47, 49, 3, 37.9, 89.9, 0, 1, 1, 0]]) #一維資料測試用
x=[]
size = np.array([[0]*17]*17) #二維資料
all = []

print("reading file...")
with open('test_xy.csv', newline='') as csvfile:
    # 讀取 CSV 檔內容,將每一列轉成一個 dictionary
    #rows = csv.DictReader(csvfile) #csv.DictReader可以資料查找 d = {key1: value1, key2: value2}
    rows = csv.reader(csvfile)
    data_list = list(rows)

print("list insert to array...")
for a in range(len(data_list)):
    x.append(data_list[a])
x=np.array(x)


print("start convert to 3D-array...")
for b in range(len(x)):
    for c in range(15):
        if c == 9 or c == 10: #資料會是小數
            x[b,c]=float(x[b,c])
        else:
            x[b,c]=int(x[b,c])

for i in range(len(x)):
    for j in range(15):
        if j >= 1 and j <=7 :
            if int(x[i,j]) == -1:
                size[random.randrange(0,16,1),random.randrange(0,16,1)] = 0
            else:
                suit=int(x[i,j]) % 4
                rank=int(x[i,j]) // 4
                size[suit,rank] = 1
        else:
            if j==9 or j==10:
                size[random.randrange(0,16,1),random.randrange(0,16,1)] = float(x[i,j])
            else:
                if int(x[i,j]) == -1:
                    size[random.randrange(0,16,1),random.randrange(0,16,1)] = 0
                else:
                    size[random.randrange(0,16,1),random.randrange(0,16,1)] = int(x[i,j])

        for k in range(17):
            all.append(size[k,])
        size = np.array([[0]*17]*17) #初始化二維資料

all = np.array(all)
all = all.reshape(len(x),15,17,17)
#print('合并矩阵:\n',all)
print('维数:',all.shape)

上一篇
DAY 8 計算機組織小筆記5
下一篇
DAY 10 CNN的格式問題
系列文
關於因耍廢太久而必須挑戰5個月上研究所的廢廢38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
FrenzyYo
iT邦新手 5 級 ‧ 2022-09-22 23:32:03

加油 祝妳能順利畢業!

我要留言

立即登入留言