import numpy as np
from keras.models import Sequential,model_from_json,load_model
from keras.layers import Dense,Activation
from keras.optimizers import SGD
class MNN(object):
def __init__(self,x_train=None,y_train=None,numN=20,inputDim=2,lr=0.01,epochs=10000):
self.x_train = np.array([[0,0],[0,1],[1,1],[1,0]]) if x_train == None else np.array(x_train)
self.y_train = np.array([0,1,0,1]).T if y_train == None else np.array(y_train).T
self.numN = numN
self.inputDim = inputDim
self.lr = lr
self.epochs = epochs
def myModel(self):
model = Sequential()
model.add(Dense(self.numN,input_dim=self.inputDim))
model.add(Activation('tanh'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
return model
def train(self):
model = self.myModel()
sgd = SGD(lr=self.lr)
model.compile(loss="binary_crossentropy",optimizer=sgd)
model.fit(self.x_train,self.y_train,epochs=self.epochs,verbose=0)
return model
def train_and_save(self,path='my_model.h5'):
model = self.train()
model.save(path)
del model
def pred(self,data,path='my_model.h5'):
model = load_model(path)
result = model.predict(np.array([data]))
if result > 0.5:
return 1
else:
return 0
if __name__ == "__main__":
mnn = MNN()
print(mnn.pred([1,1]))
print(mnn.pred([1,0]))
print(mnn.pred([0,1]))
print(mnn.pred([0,0]))
简单的神经网络模型 - 学习与保存异或逻辑关系 - Keras实现
最新推荐文章于 2024-07-23 14:36:35 发布