Ошибка типа: неподдерживаемый тип (ы) операндов для *: 'builtin_function_or_method' и 'int' - PullRequest
0 голосов
/ 29 января 2019

У меня есть код, который реализует Perceptron вручную.К сожалению, я получаю сообщение об ошибке, что я не знаю, как это исправить ... Я искал и увидел, что эта ошибка обычно возникает, когда метод используется и не вызывается, но в данный момент я не знаю, где находитсялюбой метод, который я должен вызывать в строке ошибки.

Мой код здесь:

import random

class Perceptron:
    def __init__(self, amostras, saidas, taxa_aprendizado = 0.1, epocas = 1000, limiar = -1):
        self.amostras = amostras
        self.saidas = saidas
        self.taxa_aprendizado = taxa_aprendizado
        self.epocas = epocas
        self.limiar = limiar
        self.n_amostras = len(amostras)
        self.n_atributos = len(amostras[0])
        self.pesos = []

    def treinar(self):
        for amostra in self.amostras:
            amostra.insert(0, -1)

        for i in range(self.n_atributos):
            self.pesos.append(random.random)

        self.pesos.insert(0, self.limiar)
        n_epocas = 0

        while True:

            erro = False

            for i in range(self.n_amostras):
                uzin = 0
                for j in range(self.n_atributos + 1):
                    uzin += (self.pesos[j])*(self.amostras[i][j])
                y = self.degrau(uzin)
                if y != saidas[i]:
                    erro_aux = self.saidas[i] - y
                    for j in range(self.n_atributos + 1):
                        uzin += self.pesos[j] + (self.taxa_aprendizado) * (erro_aux) * (self.amostras[i][j])
                    erro = True

            n_epocas +=1

            if not erro or n_epocas > self.epocas:
                break

        print(self.pesos)
    def degrau(self, u):
        if u >=0:
            return 1
        else:
            return 0




entradas = [[0,0], [0,1], [1,0], [1,1]]
saidas = [0,1,1,1]

rede = Perceptron(entradas, saidas)
rede.treinar()

print(rede.amostras)

Traceback (последний вызов был последним): Файл "C: / Users / nick/PycharmProjects/CursoMachineLearning/redes_neurais/perceptronzin.py ", строка 58, в файле rede.treinar ()" C: /Users/nick/PycharmProjects/CursoMachineLearning/redes_neurais/perceptronzin.py =, строка 31 в, стр. 31,self.pesos [j]) * (self.amostras [i] [j]) TypeError: неподдерживаемые типы операндов для *: 'builtin_function_or_method' и 'int'

1 Ответ

0 голосов
/ 29 января 2019

В строке 19 вы создали список функций объектов вместо floats . Использование:

self.pesos.append(random.random())

вместо

self.pesos.append(random.random)

...