如何修复“'float'对象不可下标”

您好,我的代码有问题:


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 genomes:

        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


当我运行我的文件时,我有:


" 基因组.fitness -= (输出[0] - xo[0])**2


TypeError:'float'对象不可下标“


你能帮助我吗 ?谢谢 !


尚方宝剑之说
浏览 88回答 2
2回答

收到一只叮咚

xor_outputs = [(0.0,), (1.0), (1.0), (0.0)]由于尾随逗号,此列表中的第一个元素是具有单个浮点数的元组。然而,其余的都是花车。不过,您实际上并不需要元组。你可以做xor_outputs = [0.0, 1.0, 1.0, 0.0]然后更改output[0]为output:genome.fitness -= (output - xo[0])**2请注意,跟踪这样的错误是计算机程序员的很大一部分。我建议您阅读这篇文章,了解很多可以帮助您追踪此类问题的技巧。这些工具并不总能解决问题,但它们可以帮助您找到问题的原因。

慕娘9325324

我不知道您的任何值是什么,或者您的代码在做什么,但是 output 或 xo 都是浮点值,而不是您认为的数组值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python