使用机器学习(ANN)对奇数进行分类

use*_*953 5 numbers machine-learning discrete-mathematics neural-network keras

你能对这个模型预测奇数进行改进吗?我能得到的最好的是50%,不管我的神经网络是多大而深.

from tensorflow import keras

X=[]
Y=[]
n=100
for i in range (n):
    X+=[i]
    Y+=[(-1)**i]
    if Y[i]<0:
        Y[i]=0

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(1, )),
    keras.layers.Dense(2, activation=tf.nn.softmax),
    keras.layers.Dense(1, activation=tf.nn.softmax)
])

model.compile(loss='binary_crossentropy', optimizer="adamax",metrics=['binary_accuracy'])
model.fit(X, Y, epochs=100,batch_size=10)
Run Code Online (Sandbox Code Playgroud)

zim*_*rol 2

这不是一个微不足道的任务,问问你可能会想到它。您可以在此SO 线程中找到一种工作模型。此外,这仍然是一个活跃的研究领域(称为奇偶校验问题)。如果您不将整数作为输入,而是将数字的二进制表示形式提供给网络,则其准确性可能会提高。否则,您的网络将(很可能)无法解决此任务。

您也可以在此SE 线程中找到有关算术运算的神经网络问题的更多信息。根据您想要了解这个问题的深度,过去也有很多处理这个问题的论文(例如这个那个)。

一般来说,如果您向网络提供二进制表示形式而不仅仅是十进制版本,则可以进行算术运算。您甚至可以确定 ANN 执行此类特定任务所需的神经元的确切数量。