Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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 问题:ValueError:使用序列设置数组元素_Python_Arrays_Numpy_Neural Network - Fatal编程技术网

Python 问题:ValueError:使用序列设置数组元素

Python 问题:ValueError:使用序列设置数组元素,python,arrays,numpy,neural-network,Python,Arrays,Numpy,Neural Network,错误消息:ValueError。为什么会发生这种情况 我从我买的一本书中学习神经网络。我从那本书中复制了代码,但不知怎的,它一直给我那个错误信息 多谢各位 我希望有一个数组作为输出 hidden_inputs = numpy.dot(self.wih, inputs) ValueError:设置带有序列的数组元素。出现的错误是由于以下几行造成的: self.wih = (numpy.random.rand(self.hnodes, self.inodes) -0,5) self.who =

错误消息:ValueError。为什么会发生这种情况

我从我买的一本书中学习神经网络。我从那本书中复制了代码,但不知怎的,它一直给我那个错误信息

多谢各位

我希望有一个数组作为输出

hidden_inputs = numpy.dot(self.wih, inputs)

ValueError:设置带有序列的数组元素。

出现的错误是由于以下几行造成的:

self.wih = (numpy.random.rand(self.hnodes, self.inodes) -0,5)
self.who = (numpy.random.rand(self.onodes, self.hnodes) -0,5)
(numpy.random.rand(self.hnodes,self.inodes)-0,5)
是一个元组,您试图使用
类型的
输入执行元组的点积。
所以,为了摆脱错误的改变

self.wih=(numpy.random.rand(self.hnodes,self.inode)-0,5)
to
self.wih=(numpy.random.rand(self.hnodes,self.inodes)-0.5)

self.who=(numpy.random.rand(self.onodes,self.hnodes)-0.5)
self.who=(numpy.random.rand(self.onodes,self.hnodes)-0.5)

初始化
learning\u rate
变量的行也有错误,即

学习率=0,3


它应该是
learning\u rate=0.3
。尽管如此,您还没有在任何地方的计算中使用它。

ValueError是由于您试图将元组与向量(输入向量)进行点积而产生的

我还注意到,您通过了
学习\u rate=0,3
,而您希望学习率是一个整数或浮点数。这让我想到你正在读的书中的点(.)可能被误印为逗号(,)。这可能是一个可能的问题

一旦用点固定了三个逗号,就可以看到代码运行了

以下是完整的代码:

import numpy
import scipy
from scipy import special

class neuralNetwork:

    def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):

        self.inodes = inputnodes
        self.hnodes = hiddennodes
        self.onodes = outputnodes

        self.wih = (numpy.random.rand(self.hnodes, self.inodes)-0.5)
        self.who = (numpy.random.rand(self.onodes, self.hnodes)-0.5)

        self.lr = learningrate

        self.activation_function= lambda x: scipy.special.expit(x)

        pass

    def train():
        pass

    def query(self, inputs_list):

        inputs = numpy.array(inputs_list, ndmin=2).T

        print(self.wih[0].shape)
        hidden_inputs = numpy.dot(self.wih, inputs)
        hidden_outputs = self.activation_function(hidden_inputs)

        final_inputs = numpy.dot(self.who, hidden_outputs)
        final_outputs = self.activation_function(final_inputs)

        return final_outputs

        pass


input_nodes = 3
hidden_nodes = 3
output_nodes = 3

learning_rate = 0.3

n = neuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)

n.query([1,1,1])
此外,在向SO发布问题时,请添加一些上下文。这将帮助我们理解您试图实现的目标,而不仅仅是修复编译时错误


希望有帮助。

问题在于逗号。非常感谢。虽然编辑了这个,但当我运行程序时,没有输出。如何创建输出
import numpy
import scipy
from scipy import special

class neuralNetwork:

    def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):

        self.inodes = inputnodes
        self.hnodes = hiddennodes
        self.onodes = outputnodes

        self.wih = (numpy.random.rand(self.hnodes, self.inodes)-0.5)
        self.who = (numpy.random.rand(self.onodes, self.hnodes)-0.5)

        self.lr = learningrate

        self.activation_function= lambda x: scipy.special.expit(x)

        pass

    def train():
        pass

    def query(self, inputs_list):

        inputs = numpy.array(inputs_list, ndmin=2).T

        print(self.wih[0].shape)
        hidden_inputs = numpy.dot(self.wih, inputs)
        hidden_outputs = self.activation_function(hidden_inputs)

        final_inputs = numpy.dot(self.who, hidden_outputs)
        final_outputs = self.activation_function(final_inputs)

        return final_outputs

        pass


input_nodes = 3
hidden_nodes = 3
output_nodes = 3

learning_rate = 0.3

n = neuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)

n.query([1,1,1])