我正在创建一个用于手写数字检测的神经网络。在这个时候,我只训练了大约200个数字,我从互联网上下来,并处理成黑色或白色(1或0)。你知道吗
当我用其中的10幅图像训练神经网络,对所有的200幅图像进行测试时,我得到了61.5%的准确率,但是如果我用所有的200幅图像进行测试,我得到了10%的准确率,因为它对所有图像都猜测3。为什么会这样。我试过改变图层的大小,但没用。我想我的神经网络逻辑有错误
def sigmoid(z):
return 1/(1+np.exp(-z))
def sigmoidd(z):
return z*(1-z)
def train(x, y, iterations = 1000):
synoptic_weights1 = 2*np.random.random((400,12)) -1
synoptic_weights2 = 2*np.random.random((12,12)) - 1
synoptic_weights3 = 2*np.random.random((12,10)) - 1
#print(synoptic_weights)
for i in range(1000):
hidden_layer_1 = sigmoid(np.dot(x, synoptic_weights1))
hidden_layer_2 = sigmoid(np.dot(hidden_layer_1, synoptic_weights2))
outputs = sigmoid(np.dot(hidden_layer_2, synoptic_weights3))
#print(outputs)
#print(answers)
output_error = y-outputs
output_delta = output_error*sigmoidd(outputs)
hidden_error2 = output_delta.dot(synoptic_weights3.T)
hidden_delta2 = hidden_error2 * sigmoidd(hidden_layer_2)
hidden_error1 = hidden_delta2.dot(synoptic_weights2.T)
hidden_delta1 = hidden_error1 * sigmoidd(hidden_layer_1)
synoptic_weights3 += hidden_layer_2.T.dot(output_delta)
synoptic_weights2 += hidden_layer_1.T.dot(hidden_delta2)
synoptic_weights1 += x.T.dot(hidden_delta1)
return synoptic_weights1, synoptic_weights2, synoptic_weights3
我希望在测试时,所有的200张图片都能达到相当的准确度,而不是10%
我认为你应该增加更多的训练数据。因为10幅图像都是少训练一个神经网络。神经网络需要更多的数据来学习。这肯定会提高你的模型的准确性。你知道吗
相关问题 更多 >
编程相关推荐