|
发表于 2017-4-19 00:51:38
|
显示全部楼层
我稍微简化了一下,用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]
#前一个是误差值,后一个是测试的准确率 |
|