我正在尝试构建一个玩具模型,它可以识别两个变量之间的恒定差异:(if variable1- variable2>10 then 1 else 0).
对于任何回归模型来说,这应该是一个非常简单的任务,但我想用 NN 来解决它。然而,我构建的所有简单神经网络都不能给我超过 51% 的准确率。
这是我不明白的事情吗?
我的代码:
seed = 7
np.random.seed(seed)
x1 = np.arange(50000)
x2 = x1+10+(0.5-np.random.rand(len(x1)))
X = np.column_stack((x1,x2))
Y = (x2-x1)>10
encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)
train_X, test_X, train_y, test_y = train_test_split(
X, Y, train_size=0.9, random_state=0)
model = Sequential()
model.add(Dense(2, input_dim=2,activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=RMSprop(lr=0.001),
loss=binary_crossentropy, metrics=[binary_accuracy])
history = model.fit(train_X, train_y, epochs=1000, batch_size=10,
validation_data=(test_X, test_y), verbose=1)