如何使用集合和节点修复无效语法?
How to fix an invalid syntax with a set and nodes?
我的代码有问题。当我尝试 运行 它时,我有一个错误:SyntaxError: invalid syntax
它是关于这一行的:
node_names = {-1:'A', -2:'B', 0:'A XOR B'}
我可以解决什么问题?我认为语法是正确的。我们使用花括号{}来创建集合?或者我必须使用 set() 吗?
from __future__ import print_function
import os
import neat
import visualize
xor_inputs = [(0.0, 0.0), (0.0, 1.0), (1.0, 0.0), (1.0, 1.0)]
xor_outputs = [(0.0,), (1.0), (1.0), (0.0)]
def eval_genomes(genomes, config):
for genomes_id, genome in genome:
genome.fitness = 4.0
net = neat.nn.FeedForwardNetwork.create(genome, config)
for xi, xo in zip(xor_inputs, xor_outputs):
output = net.activate(xi)
genome.fitness -= (output[0] - xo[0]) ** 2
def run(config_file):
config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file)
p = neat.Population(config)
p.add_reporter(neat.StdOutReporter(True))
stats = neat.StatisticsReporter()
p.add_reporter(stats)
p.add_reporter(neat.Checkpointer(5))
winner = p.run(eval_genomes, 300)
print('\nBest genome:\n{!s}'.format(winner))
print('\nOutput:')
winner_net = neat.nn.FeedForwardNetwork.create(winner, config)
for xi, xo in zip(xor_inputs, xor_outputs):
output = winner_net.activate(xi)
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)
node_names = {-1:'A', -2:'B', 0:'A XOR B'}
visualize.draw_net(config, winner, True, node_names=node_names)
visualize.plot_stats(stats, ylog=False, view=True)
visualize.plot_species(stats, view=True)
p = neat.Checkpointer.restore_checkpoint('neat-checkpoint-4')
p.run(eval_genomes, 10)
if __name__ == '__main__':
local_dir = os.path.dirname(__file__)
config_path = os.path.join(local_dir, 'NeatConfigXOR.txt')
run(config_path)
在定义您的字典之前,您没有为 print
语句关闭括号。 python 中的语法错误应通过阅读错误发生位置之前的代码来解决。
正确:
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output))
^
您忘记了这一行的右括号:
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)
您关闭了 format()
但没有关闭 print(
我的代码有问题。当我尝试 运行 它时,我有一个错误:SyntaxError: invalid syntax
它是关于这一行的:
node_names = {-1:'A', -2:'B', 0:'A XOR B'}
我可以解决什么问题?我认为语法是正确的。我们使用花括号{}来创建集合?或者我必须使用 set() 吗?
from __future__ import print_function
import os
import neat
import visualize
xor_inputs = [(0.0, 0.0), (0.0, 1.0), (1.0, 0.0), (1.0, 1.0)]
xor_outputs = [(0.0,), (1.0), (1.0), (0.0)]
def eval_genomes(genomes, config):
for genomes_id, genome in genome:
genome.fitness = 4.0
net = neat.nn.FeedForwardNetwork.create(genome, config)
for xi, xo in zip(xor_inputs, xor_outputs):
output = net.activate(xi)
genome.fitness -= (output[0] - xo[0]) ** 2
def run(config_file):
config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file)
p = neat.Population(config)
p.add_reporter(neat.StdOutReporter(True))
stats = neat.StatisticsReporter()
p.add_reporter(stats)
p.add_reporter(neat.Checkpointer(5))
winner = p.run(eval_genomes, 300)
print('\nBest genome:\n{!s}'.format(winner))
print('\nOutput:')
winner_net = neat.nn.FeedForwardNetwork.create(winner, config)
for xi, xo in zip(xor_inputs, xor_outputs):
output = winner_net.activate(xi)
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)
node_names = {-1:'A', -2:'B', 0:'A XOR B'}
visualize.draw_net(config, winner, True, node_names=node_names)
visualize.plot_stats(stats, ylog=False, view=True)
visualize.plot_species(stats, view=True)
p = neat.Checkpointer.restore_checkpoint('neat-checkpoint-4')
p.run(eval_genomes, 10)
if __name__ == '__main__':
local_dir = os.path.dirname(__file__)
config_path = os.path.join(local_dir, 'NeatConfigXOR.txt')
run(config_path)
在定义您的字典之前,您没有为 print
语句关闭括号。 python 中的语法错误应通过阅读错误发生位置之前的代码来解决。
正确:
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output))
^
您忘记了这一行的右括号:
print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)
您关闭了 format()
但没有关闭 print(