我稍微简化了一下,用123表示石头剪刀布,程序只是用来预测下一步会出什么,其实只要预测出来了,那么就必定能获胜了。
我根据自己的习惯输入了300组数据进行训练,经过1000次学习以后,机器的预测成功率达到了80%,还是相当不错的。
用了循环神经网络。
源代码:#coding:utf-8
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM, TimeDistributed
from keras.optimizers import Adam
inputs = '1231231231231123123123131231231332123131312312312313131231312312313131312313131321231312312313132312313131231313131323123123123131312313123131321231231231231321313123131231231231232131231321231312312313123123132123131321321312313213212312313131313131231231312312313123123123123123123131323131312313123123123123123123'
data = list(inputs)
x_data = np.array(data).reshape((-1,1,1))
model = Sequential()
model.add(LSTM(
output_dim = 200,
batch_input_shape = (25,1,1),
return_sequences = True,
stateful = True))
model.add(TimeDistributed(Dense(1)))
adam = Adam(lr=0.01)
model.compile(optimizer=adam, loss='mse', metrics=['accuracy'])
model.fit(x_data[:250], x_data[1:251], batch_size=25, epochs=1000)
print model.evaluate(x_data[250:300], x_data[251:301], batch_size=25, verbose=1)
输出:[0.15321254730224609, 0.80000001192092896]
#前一个是误差值,后一个是测试的准确率 |