Ошибка ValueError возникает из-за того, что вы пытаетесь выполнить точечное произведение кортежа с вектором (входной вектор).
Я также отметил, что вы проходите learning_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. Это поможет нам понять, чего вы хотите добиться, а не просто исправить ошибки во время компиляции.
Надеюсь, это поможет.