Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个整数相加的神经网络_Python_Machine Learning_Keras_Neural Network - Fatal编程技术网

Python 两个整数相加的神经网络

Python 两个整数相加的神经网络,python,machine-learning,keras,neural-network,Python,Machine Learning,Keras,Neural Network,我想创建一个可以添加两个整数的神经网络。我的设计如下: 问题我的准确率很低,只有0.002%。我能做些什么来增加它 要创建数据,请执行以下操作: 将numpy作为np导入 随机输入 a=[] b=[] c=[] 对于范围(11001)内的i: a、 附加(random.randint(1999)) b、 附加(random.randint(1999)) c、 附加(a[i-1]+b[i-1]) X=np.array([a,b]).transpose() y=np.array(c.transpos

我想创建一个可以添加两个整数的神经网络。我的设计如下:

问题我的准确率很低,只有0.002%。我能做些什么来增加它

  • 要创建数据,请执行以下操作:

    将numpy作为np导入 随机输入 a=[] b=[] c=[]

    对于范围(11001)内的i: a、 附加(random.randint(1999)) b、 附加(random.randint(1999)) c、 附加(a[i-1]+b[i-1])

    X=np.array([a,b]).transpose() y=np.array(c.transpose().reformate(-1,1)

  • 缩放我的数据:

  • 网络:
  • 产出:

    Epoch 133/140
    1000/1000 [==============================] - 0s 39us/step - loss: 0.0012 - acc: 0.0020
    Epoch 134/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 135/140
    1000/1000 [==============================] - 0s 41us/step - loss: 0.0012 - acc: 0.0020
    Epoch 136/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020
    Epoch 137/140
    1000/1000 [==============================] - 0s 41us/step - loss: 0.0012 - acc: 0.0020
    Epoch 138/140
    1000/1000 [==============================] - 0s 42us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 139/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 140/140
    1000/1000 [==============================] - 0s 42us/step - loss: 0.0012 - acc: 0.0020 
    
    这是我的控制台输出代码


    我尝试了各种不同的优化器、损失和激活组合,加上这些数据完全符合线性回归。

    您试图拟合线性函数,但在内部使用了sigmoid节点,它将值映射到一个范围(0,1)。Sigmoid对于分类非常有用,但如果值在(0,1)之外,则不适用于回归。如果您将随机数限制为区间[0,1]中的浮点数,它可能会起作用。或者将所有位分别输入到节点中,让它学习加法器。

    两个错误,几个问题

    错误:

    • 这是一个回归问题,因此最后一层的激活应该是
      linear
      ,而不是
      relu
      (不指定任何内容就可以了,因为
      linear
      是Keras层中的激活)
    • 准确度是;从您的模型编译中删除
      metrics=['acc']
      ——您应该仅凭损失来判断模型的性能
    这些问题:

    • 对于中间层,我们不使用
      sigmoid
      激活;将它们全部更改为
      relu
    • 删除
      kernel\u初始值设定项
      参数,从而保留建议使用的
      glorot\u统一
    • 多个密集层,每个层只有两个节点不是一个好主意;尝试减少层的数量并增加节点的数量。有关iris数据的简单示例,请参阅

    这就是我对数据进行预处理的原因。它将值从0-1转换为(0,1)值,因此在上面的示例中,我的整个数据集都是(0,1)值。这些值以前已经过规范化
    sigmoid
    实际上从未在实践中用于中间层,但不是因为你在这里暗示的原因。@NanduRaj我必须承认我对神经网络没有太多经验,所以我想我的知识可能有点过时了。根据维基百科2011年以来的数据,在中间层中,relu优先于乙状结肠。这里列出了一些优点。我非常感谢。对我来说,你不仅仅是老师。我删除了weightinit并使用了线性激活减少层,现在我有了准确的预测和非常低的损失,但无论我有好的预测,准确度仍然是0.002。请注意我在回答中所说的:准确度在回归中是没有意义的,你不应该使用它。绩效评估应该完全基于预测的损失和质量。是的!谢谢,我知道了
    
    from keras import Sequential
    from keras.layers import Dense
    from keras.optimizers import SGD
    
    clfa = Sequential()
    clfa.add(Dense(input_dim=2, output_dim=2, activation='sigmoid', kernel_initializer='he_uniform'))
    clfa.add(Dense(output_dim=2, activation='sigmoid', kernel_initializer='uniform'))
    clfa.add(Dense(output_dim=2, activation='sigmoid', kernel_initializer='uniform'))
    clfa.add(Dense(output_dim=2, activation='sigmoid', kernel_initializer='uniform'))
    clfa.add(Dense(output_dim=1, activation='relu'))
    
    opt = SGD(lr=0.01)
    clfa.compile(opt, loss='mean_squared_error', metrics=['acc'])
    clfa.fit(X, y, epochs=140)
    
    Epoch 133/140
    1000/1000 [==============================] - 0s 39us/step - loss: 0.0012 - acc: 0.0020
    Epoch 134/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 135/140
    1000/1000 [==============================] - 0s 41us/step - loss: 0.0012 - acc: 0.0020
    Epoch 136/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020
    Epoch 137/140
    1000/1000 [==============================] - 0s 41us/step - loss: 0.0012 - acc: 0.0020
    Epoch 138/140
    1000/1000 [==============================] - 0s 42us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 139/140
    1000/1000 [==============================] - 0s 40us/step - loss: 0.0012 - acc: 0.0020   
    Epoch 140/140
    1000/1000 [==============================] - 0s 42us/step - loss: 0.0012 - acc: 0.0020