【发布时间】:2017-04-14 11:17:01
【问题描述】:
目前我正在使用基于this website 的python 机器学习(第二部分是关于图像识别)。我想训练一个网络来识别图像中的 4 个特定点,但我的问题是:
神经网络是通过简单地将矩阵相乘、计算给定输出和识别输出之间的增量并重新计算矩阵中的权重来创建的。现在假设我有一个600x800 像素图像作为输入。如果我将它与我的层矩阵相乘,我将无法得到 4x2 矩阵作为输出(每个点的 x,y)。
我的第二个问题是我应该有多少隐藏层来解决这个问题?更多的层总是更好但需要更长的计算时间吗?我们能猜出我们需要多少隐藏层,或者我们应该测试一些值并充分利用它吗?
我目前的神经网络代码:
from os.path import isfile
import numpy as np
class NeuralNetwork:
def __init__(self):
np.random.seed(1)
self.syn0 = 2 * np.random.random((480000,8)) - 1
@staticmethod
def relu(x, deriv=False):
if(deriv):
res = np.maximum(x, 0)
return np.minimum(res, 1)
return np.maximum(x, 0)
def train(self, imgIn, out):
l1 = NeuralNetwork.relu(np.dot(imgIn, self.syn0))
l1_error = out - l1
exp = NeuralNetwork.relu(l1,True)
l1_delta = l1_error * exp
self.syn0 += np.dot(imgIn.T,l1_delta)
return l1 #np.abs(out - l1)
def identify(self, img):
return NeuralNetwork.relu(np.dot(imgIn, self.syn0))
【问题讨论】: