用keras实现异
在Ng的视频里面,介绍神经网络的时候就用了与、或、非、异或、同或来讲解。
通过两层的神经网络,第一层是三个units(包括偏置项),然后第二层也是三个units(包括偏置项),然后最后输出一个结果,每一层的激活函数(activation)都是tanh
刚刚看了keras的说明,想着简单用keras实现一下这个神经网络。
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
import numpy as np
x_train = np.array([[0,0],[0,1],[1,0],[1,1]])
y_train = np.array([[0],[1],[1],[0]])
if __name__ == "__main__":
model = Sequential()
model.add(Dense(4, activation="tanh", input_dim=2, use_bias=True))
model.add(Dense(1, activation="tanh", input_dim=3, use_bias=True))
model.compile(loss='mse', optimizer='rmsprop')
model.fit(x_train, y_train, epochs=1000)
#score = model.evaluate(x_train, y_train)
predict = model.predict(x_train)
#print(predict)
result=[]
index = 0
for i in predict:
if i < 0.5:
result.append(0)
else:
result.append(1)
print(result)
首先给出x_train 和 y_train
然后用sequential()建立模型,通过add添加Dense来建立一层一层的神经
设置model的参数,也就是loss和optimizer
keras我感觉好的一点是有个叫model.summary()的东西,这个东西可以看到我的模型到底现在是几层、每一层的输入输出、参数