Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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 - Fatal编程技术网

Python 机器学习输入和输出的大小

Python 机器学习输入和输出的大小,python,machine-learning,Python,Machine Learning,目前,我正在使用基于的python进行机器学习(第二部分是关于图像识别)。我想训练网络识别am图像中的4个特定点,但我的问题是: 神经网络是通过简单地将矩阵相乘,计算给定输出和识别输出之间的增量,并重新计算矩阵中的权重来创建的。现在让我们假设我有一个600x800像素图像作为输入。如果我将其与我的图层矩阵相乘,我无法得到一个4x2矩阵作为输出(x,y) 我的第二个问题是,对于这个问题,我应该有多少隐藏层?层数越多越好,但计算时间越长?我们能猜出我们需要多少隐藏层吗?或者我们应该测试一些值并充分利

目前,我正在使用基于的python进行机器学习(第二部分是关于图像识别)。我想训练网络识别am图像中的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))
问题1。输入数据

您必须序列化输入。例如,如果您有一个600*800像素的图像,则输入必须为1*480000(行、列)。 行表示数据的数量,列表示数据的维度

问题2。分类

如果要对4种不同类型的类进行分类,应该使用(1,4)向量作为输出。例如,有4个类(“鱼”、“猫”、“老虎”、“汽车”)。那么向量(1,0,0,0)表示鱼

问题3。完全连接的网络

我认为本主页中的示例使用完全连接的网络。它使用整个图像进行一次分类。如果要使用图像的子集进行分类。您应该使用卷积神经网络或其他方法。我对此不太了解

问题4。超参数


这取决于数据。必须使用各种超参数进行测试。然后选择最佳超参数。

好的,这对我很有帮助。非常感谢。但现在我面临另一个问题:当我将我的图像与我的第一层相乘时(在开始随机生成),结果矩阵中的值太大,以至于无法计算nonlin(sigmoid)方法的
exp
函数。你知道我能接近谁吗?或者是否有更好的S形函数?您可以使用Relu函数。sigmoid函数目前没有使用,因为它们存在梯度消失问题。ReLU是几乎所有情况下的最佳解决方案。凯,谢谢你,我会用这个试试!我是否也使用此函数的导数来计算
错误_delta
,因为它只是
0
1
,这对我来说有点奇怪。是的。你必须这么做。有一些修改版本的ReLU,但我认为简单的ReLU很适合。我尝试使用新的ReLU函数,但它总是向我返回0个向量。我把来自神经网络的代码添加到问题中。如果你能看一下就好了。