激活函数NEAT中的self.values [i]为无

问题描述

我正在使用NEAT进行项目,但是我遇到了问题。似乎在这代码中: (位于FeedForwardNetwork类的neat / nn / Feed_forward.py文件中)

 def activate(self,inputs):
    if len(self.input_nodes) != len(inputs):
        raise RuntimeError("Expected {0:n} inputs,got {1:n}".format(len(self.input_nodes),len(inputs)))

    for k,v in zip(self.input_nodes,inputs):
        self.values[k] = v

    for node,act_func,agg_func,bias,response,links in self.node_evals:
        node_inputs = []
        for i,w in links:
            #print(self.values[i])
            if self.values[i]!= None:          #prints 'None' b4 error
                node_inputs.append(self.values[i] * w) #HERE 
        s = agg_func(node_inputs)
        self.values[node] = act_func(bias + response * s)

    return [self.values[i] for i in self.output_nodes]

错误消息:

File "d:/Projects/PythonProjects/PrivateGithub/Snake_with_NEAT/main.py",line 273,in <module>
run(config_path)

File "d:/Projects/PythonProjects/PrivateGithub/Snake_with_NEAT/main.py",line 268,in run
    winner = p.run(eval_g,100000)
  File "C:\Users\plate\anaconda3\envs\tensor\lib\site-packages\neat\population.py",line 89,in run
    fitness_function(list(iteritems(self.population)),self.config)
  File "d:/Projects/PythonProjects/PrivateGithub/Snake_with_NEAT/main.py",line 198,in eval_g
    apples[i].get_pos_y()])

File "C:\Users\plate\anaconda3\envs\tensor\lib\site-packages\neat\nn\Feed_forward.py",line 24,in activate
    node_inputs.append(self.values[i] * w)
TypeError: unsupported operand type(s) for *: 'nonetype' and 'float'

问题出在“ #HERE”行上,我“已修复” 通过在上面的行中添加“ if”来添加它,但我不认为这是一个很好的解决方案。 为什么self.values [i]是None?我检查了输入内容,看起来不错,但是“ if”上方的打印功能返回“无”。此错误会在大约2-5代后出现,有时甚至是立即发生。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)