0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

河のみでそのプレイヤの聴牌YN(タンヤオ河限定)

Last updated at Posted at 2023-06-05

※この記事は2020年に作成しました

#概要
タンヤオのみを狙っていくエージェントから河のデータを取った。聴牌の時の河のデータ5000個と、ノーテンの時の河のデータ5000個の計10000個取った。

このデータ18個のデータを18×34の630個のワンホットベクトルにして3層ニューラルネットワークで聴牌YNの判定を行った。

中間層は315次元、validation_split=0.2とした。
以下に作成した3層ニューラルネットワークの図を示す。
kawa630.png

#結果
テストデータに対する正解率は約52%になった。聴牌とノーテンのデータが5000個ずつなので、ランダムに選んだとしても50%の確率で当たる。よって、ほとんど学習できてないことがわかる。

#作成したプログラム

# coding: UTF-8
import csv
import numpy as np
from keras.utils import to_categorical
from keras.models import Sequential,Model
from keras.layers import Dense,Conv2D,MaxPooling2D,Dropout,Flatten,Activation,BatchNormalization
from keras.optimizers import Adam
from keras.layers import Dense,Input
from keras.callbacks import TensorBoard
from keras import optimizers,regularizers
np.set_printoptions(threshold=100000)
data = 5000#5000

x_trainTP = np.loadtxt("C:/sqlite/tanyao_TPkawa.csv",delimiter=",")
x_trainTP = np.delete(x_trainTP,slice(data,None),0)

x_trainNT = np.loadtxt("C:/sqlite/tanyao_NTkawa.csv",delimiter=",")
x_trainNT = np.delete(x_trainNT,slice(data,None),0)

kawa = np.vstack((x_trainTP,x_trainNT))

kawa630 = np.zeros((data*2,630))
for i in range(data*2):
    for j in range(18):
        kawa630[i,(j*35)] += 1

for i in range(data*2):
    for j in range(18):
        if kawa[i,j]!=0:
            hai = int(kawa[i,j])
            kawa630[i,((j*35)+hai-1)] += 1
            kawa630[i,(j*35)] -= 1

#print(kawa630.shape)

label = np.zeros((data*2,1))
for i in range(data):
    label[i] += 1
label = to_categorical(label,2)
#print(label)

#前処理ここまで
model = Sequential()

input_data = Input(shape=(630,))#入力層
hidden_layer = Dense(315, activation='relu')(input_data)#中間層
output_layer = Dense(2, activation='softmax',kernel_regularizer=regularizers.l2(1e-4))(hidden_layer)#出力層
#Hidden_output = Model(input = input_data , output = hidden_layer) #中間出力用
model = Model(input = input_data , output = output_layer)#入力から出力

#最適化アルゴリズムAdam、損失関数
model.compile(
    optimizer=Adam(lr=0.01),
    loss='categorical_crossentropy',
    metrics=['accuracy'],
)
#http://localhost:6006/
#tensorboard --logdir=./logs
#tsb = TensorBoard(log_dir='./logs')
history_adam=model.fit(
    kawa630,
    label,
    batch_size=256,
    epochs=100,
    verbose=1,
    shuffle = True,
    validation_split=0.2,
    #callbacks=[tsb]
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?