Python 两个整数相加的神经网络
我想创建一个可以添加两个整数的神经网络。我的设计如下: 问题我的准确率很低,只有0.002%。我能做些什么来增加它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
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
是Keras层中的激活)linear
- 准确度是;从您的模型编译中删除
——您应该仅凭损失来判断模型的性能metrics=['acc']
- 对于中间层,我们不使用
激活;将它们全部更改为sigmoid
relu
- 删除
参数,从而保留建议使用的kernel\u初始值设定项
glorot\u统一
- 多个密集层,每个层只有两个节点不是一个好主意;尝试减少层的数量并增加节点的数量。有关iris数据的简单示例,请参阅
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