Python 问题:ValueError:使用序列设置数组元素
错误消息: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 =
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)
toself.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])