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

时间:2018-08-21 07:24:52

标签: machine-learning neural-network keras numbers discrete-mathematics

您可以在此模型的奇数预测上得到改进吗?我能得到的最好结果是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)

2 个答案:

答案 0 :(得分:2)

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

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

通常,如果为网络提供二进制表示形式而不是十进制形式,则可以进行算术运算。您甚至可以确定ANN执行该类特定任务所需的确切神经元数量。

答案 1 :(得分:0)

为完成FlashTek的答案,神经网络在特定的算术运算方面存在问题,即乘法,除法和派生运算,请参见 https://stats.stackexchange.com/questions/217703/can-deep-neural-network-approximate-multiplication-function-without-normalizatio Can't approximate simple multiplication function in neural network with 1 hidden layer

这是因为神经网络是其一部分的数学框架,它们是广义线性模型(GLM)https://en.wikipedia.org/wiki/Generalized_linear_modelhttp://mikkyang.com/blog/neural-networks-and-generalized-linear-models/index.html)和加权 总和 模型(WSM)https://en.wikipedia.org/wiki/Weighted_sum_model),请注意,在GLM和WSM中,张量(矩阵,向量)之间没有乘法仅涉及乘以标量权重。这就是为什么神经网络无法应用于或不足以解决具有特定结构(涉及乘法,除法...)的数学问题的原因