Аккуратная - Python реализация - объект 'module' не вызывается - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь реализовать модифицированную версию примера XOR из библиотеки Neat- Python , но продолжаю сталкиваться со следующей ошибкой при попытке запустить приведенный ниже код:

Исключение необработано: объект 'module' не вызывается

Я посмотрел этот исчерпывающий ответ относительно этого типа ошибки, но не смог чтобы решить проблему.

Я подозреваю, что проблема заключается в расположении файла конфигурации в моем каталоге, но я не уверен, где он должен быть (очень любитель, когда дело доходит до Python Боюсь).

Все примеры, использующие Neat- Python, я нашел, что, кажется, справляется с этим, используя более или менее точный код, найденный в примере XOR, так что я уверен, что есть что-то очень basi c Я ошибаюсь.

Ваша помощь высоко ценится.

Полный код, так как он довольно короткий:

from sklearn.preprocessing import Normalizer
import numpy as np
import pandas as pd
import neat 
import pickle
import os

#Load csv file and define input and output columns
datafile = pd.read_csv('C:/Users/`/Desktop/Python Projects/BFA Dirty - NEAT-Python/BFADirty-train-header.csv')
datafile = datafile.set_index(["Date"])
df = datafile.values
df_input = df[:,0:39]
df_output = df[:,39]

#Normalise input for use in neural network (output is binary and need not be touched)
scaler = Normalizer().fit(df_input)
df_input_norm = scaler.transform(df_input)

#Show normalised input file
#np.set_printoptions(precision=3)
#print(df_input_norm)

def eval_genomes(genomes, config):
    for genome_id, genome in genomes:
        genome.fitness = 4.0
        net = neat.nn.FeedForwardNetwork.create(genome, config)
        for dfi, dfo in zip(df_input_norm, df_output):
            output = net.activate(dfi)
            genome.fitness -= (output[0] - dfo[0]) ** 2


def run(config_file):
    config = neat.config(neat.DefaultGenome, neat.DefaultReproduction, 
                         neat.DefaultSpeciesSet, neat.DefaultStagnation,
                         config_file) # <--- Error occurs here (line 35)

    #Create the population
    p = neat.population(config)

    # Add a stdout reporter to show progress in the terminal.
    p.add_reporter(neat.StdOutReporter(True))
    stats = neat.StatisticsReporter()
    p.add_reporter(stats)
    #p.add_reporter(neat.Checkpointer(5))

    #run neural net
    winner = p.run(eval_genomes)

    # Display the winning genome.
    print('\nBest genome:\n{!s}'.format(winner))

if __name__ == '__main__':
    local_dir = os.path.dirname(__file__)
    config_path = os.path.join(local_dir, 'config-feedforward.txt')
    run(config_path) #Line 55

РЕДАКТИРОВАТЬ: ошибка запускается строкой config_file. Комментарий добавлен в код, чтобы выделить его.

РЕДАКТИРОВАТЬ2:

Call Stack

Locals

Traceback (most recent call last):
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\ptvsd_launcher.py", line 119, in <module>
    vspd.debug(filename, port_num, debug_id, debug_options, run_as)
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\debugger.py", line 39, in debug
    run()
  File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\__main__.py", line 316, in run_file
    runpy.run_path(target, run_name='__main__')
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\`\Desktop\Python Projects\BFA Dirty - NEAT-Python\BFA_Dirty___NEAT_Python.py", line 57, in <module>
    run(config_path)
  File "C:\Users\`\Desktop\Python Projects\BFA Dirty - NEAT-Python\BFA_Dirty___NEAT_Python.py", line 35, in run
    config_file)
TypeError: 'module' object is not callable

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Я сделал короткий поиск аккуратных примеров и нашел Пример CodeReclaimers .

Код кажется очень похожим на ваш, но здесь используется следующая строка:

p = neat.Population(config)

С заглавной буквой "P" вместо строчной буквы "p", которую вы использовали. При этом вызывая класс Population вместо модуля .

0 голосов
/ 29 февраля 2020

Наконец-то нашел решение. Мне не хватало прописной C в config = neat.config.

Работы ниже:

def run(config_file):
    config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, 
                         neat.DefaultSpeciesSet, neat.DefaultStagnation,
                         config_file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...