我一直在尝试使用 keras 应用一个简单的神经网络来预测一个数字序列,规则是如果输入整数是奇数,它应该是 4,如果它是偶数,它应该是 2。但是神经网络卡在 60 % 准确率。有谁知道这个问题的解决方案?
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers.normalization import BatchNormalization
from sklearn.model_selection import cross_val_score
from keras.wrappers.scikit_learn import KerasClassifier
import numpy as np
def gen(x):
if (x%2==0):
return 2;
else:
return 4;
a = []
for i in range(1,100001):
a.append([i,gen(i)])
a = np.array(a)
x = a[:,0:1]
y = a[:,1:2]
def MakeClassifier():
network_classifier = Sequential()
network_classifier.add(Dense(units=2,kernel_initializer="uniform",activation="relu",input_dim=1)) #Hidden Layer1 taking into account number of inputs(independant variables(x)
network_classifier.add(BatchNormalization())
network_classifier.add(Dense(units=1,kernel_initializer="uniform",activation="sigmoid"))#OutPutLayer
network_classifier.compile(optimizer="adam",loss="binary_crossentropy",metrics=["accuracy"])#If multicategorical then categorical_crossentropy
return network_classifier
classifier = KerasClassifier(build_fn= MakeClassifier , batch_size = 10 , epochs = 1000)
classifier.fit(x,y,epochs=100,batch_size=1000)
print(classifier.predict([[6],[7]])) #Should Predict 2 and 4