【问题标题】:ValueError: shapes (4,1) and (3,1) not aligned: 1 (dim 1) != 3 (dim 0)ValueError:形状(4,1)和(3,1)未对齐:1(dim 1)!= 3(dim 0)
【发布时间】:2021-05-09 10:46:03
【问题描述】:
import numpy as np


class NeuralNetwork():

    def __init__(self):
        np.random.seed(1)
        self.synapticweights = 2 * np.random.random((3,1)) - 1


    def sigmoid(self, x):
        return 1 / (1 + np.exp(-x))


    def sigmoidervative(self, x):
        return x * (1-x)

    def think(self, inputs):
        inputs = inputs.astype(float)
        output = self.sigmoid(np.dot(inputs, self.synapticweights))

        return output


if __name__ == '__main__':

    neuralnetwork = NeuralNetwork()

    print("Random synaptic weights")
    print(neuralnetwork.synapticweights)

    """Defining Training Input"""
    traininginputs = np.array([[0, 0, 1],
                               [1, 1, 1],
                               [1, 0, 1],
                               [0, 1, 1]])

    '''training output'''
    trainingoutput = np.array([[0, 1, 1, 0]]).T

    neuralnetwork.train(traininginput, trainingoutput, 5000)

    print("Synaptic Weight After Training: ")
    print(neuralnetwork.synapticweights)

    a = str(input("Input 1: "))
    b = str(input("Input 2: "))
    c = str(input("Input 3: "))

    print("Now situation: input data = ", a, b, c)
    print("Output data: ")
    print(neuralnetwork.think(np.array([a, b, c])))

追溯:

Traceback (most recent call last):
  File "/Users/mirzasamibaig/Documents/PycharmProjects/pythonProjects/lib/python3.6/site-packages/mlproject/neuralnet.py", line 50, in <module>
    neuralnetwork.train(trainingoutput, trainingoutput, 5000)
  File "/Users/mirzasamibaig/Documents/PycharmProjects/pythonProjects/lib/python3.6/site-packages/mlproject/neuralnet.py", line 21, in train
    actualoutput = self.think(traininginput)
  File "/Users/mirzasamibaig/Documents/PycharmProjects/pythonProjects/lib/python3.6/site-packages/mlproject/neuralnet.py", line 28, in think
    output = self.sigmoid(np.dot(inputs, self.synapticweights))
ValueError: shapes (4,1) and (3,1) not aligned: 1 (dim 1) != 3 (dim 0)

我知道错误所说的 4 x 1 matix 只能乘以 4 x 1 或相同行的等价物。我试图将self.synapticweights = 2 * np.random.random((3,1)) - 1 更改为(4,1) 以使其工作,但我仍然遇到同样的错误。我应该如何控制突触权重我做错了什么?需要帮助。

【问题讨论】:

  • 请在neuralnetwork.train(trainingoutput, trainingoutput, 5000)类中显示函数的代码。 think train 函数拼错了吗?你为什么要通过trainingoutput 两次而不是traininginput
  • def train(self, traininginput, trainingoutput, trainingiteration): for i in range(trainingiteration): actualoutput = self.think(traininginput) error = trainingoutput - actualoutput adjustments = np.dot(traininginput.T, error * self.sigmoidervative(actualoutput)) self.synapticweights += adjustments @AkshaySehgal
  • 是的,我修好了
  • 您能否更新原始问题以进行修复??
  • 好的,这样错误就消失了,但我现在得到的错误是这样的。Process finished with exit code 132 (interrupted by signal 4: SIGILL)

标签: python numpy neural-network sigmoid


【解决方案1】:

你搞错了

当矩阵相乘时,您需要使两个内部值相同。所以对于(A,B)矩阵和(C,D)矩阵,为了能够相乘,B需要等于C。

在您的情况下,您有 (4,1) 和 (3,1)。并且因为 1 != 3,你不能将它们相乘。 第二个矩阵需要是(1,n)矩阵。这就是为什么它说它们没有对齐。

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2019-05-28
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多