keras初学者实现异或门问题

wjbianjason 2015-07-22 09:59:58
最近在学keras,在拿异或门练手,但结果老不对,故来此请教,谢谢,另外在model.predict的时候为什么一点要输入两个参数。
from keras.models import Sequential
from keras.layers.core import Dense,Activation
from keras.optimizers import SGD
import numpy as np
model = Sequential()
model.add(Dense(input_dim=2,output_dim=4,init="glorot_uniform"))
model.add(Activation("linear"))
model.add(Dense(input_dim=4,output_dim=1,init="glorot_uniform"))
model.add(Activation("linear"))
sgd = SGD(l2=0.0,lr=0.05, decay=1e-6, momentum=0.11, nesterov=True)
model.compile(loss='mean_absolute_error', optimizer=sgd)
print "begin to train"
list1 = [1,1]
label1 = [0]
list2 = [1,0]
label2 = [1]
list3 = [0,0]
label3 = [0]
list4 = [0,1]
label4 = [1]
train_data = np.array((list1,list2,list3,list4))
label = np.array((label1,label2,label3,label4))

model.fit(train_data,label,nb_epoch = 1000,batch_size = 4,verbose = 1,shuffle=True,show_accuracy = True)
list_test = [0,1]
test = np.array((list_test,list1))
classes = model.predict(test)
print classes
...全文
8479 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfdywy 2016-10-13
  • 打赏
  • 举报
回复
你把activation 改成tanh 试试看?
qq_35015218 2016-05-16
  • 打赏
  • 举报
回复
你的Activation是liner的,改成relu这样的非线性即可。
dsq90 2015-11-22
  • 打赏
  • 举报
回复
忽略我之前对问题一的回答
dsq90 2015-11-20
  • 打赏
  • 举报
回复
问题一:咱们是用线性回归拟合训练数据,回归问题,故而预测出来的结果是个连续值,而不是直接给出0或者1哈,不过观测结果你会发现 第一个接近1 第二个接近0,故而你可以卡一个阈值譬如0.5 问题二:也可以只对一组特征进行预测,代码改成这样即可 test = np.array([list_test])

374

社区成员

发帖
与我相关
我的任务
社区描述
CUDA on Linux
社区管理员
  • CUDA on Linux社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧