Keras多输出模块

2024-09-27 23:18:40 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:我有部分答案,请看这篇文章的结尾

在制作了两个不同的模型来预测智囊团玩家的分数之后,我现在尝试制作一个有两个输出的单一模型:

  • rcrp:在正确的位置有正确颜色的钉的数量
  • rcwp:在错误的地方有正确颜色的钉子数量。在

这个条目包含了玩家的提议和在二进制表中找到编码的秘密。6种颜色*4个引脚=秘密24位,提案24位。在

这是我的模型架构Model Architecture。在

以下是我的主要代码:

main_input = Input(shape=(input_layer_size, ), name='main_input')
x = Dense(hidden_layer_size, activation="relu")(main_input)
for i in range(nb_hidden_layer):
    x = Dense(hidden_layer_size, activation="relu")(x)
rcrp_out = Dense(1, activation='sigmoid', name='rcrp_out')(x)
rcwp_out = Dense(1, activation='sigmoid', name='rcwp_out')(x)

model_rpwp = Model(inputs=main_input, outputs=[rcrp_out, rcwp_out])
model_rpwp.compile(optimizer='rmsprop', loss=['binary_crossentropy', 'binary_crossentropy'], metrics=['accuracy'])

以下是培训数据示例:

^{pr2}$

可能有些东西我不明白,因为我的模型什么也学不到,总是为两个输出预测0。在

我尝试过多种损失函数和架构,但都没用。我的输入和输出数据是按照我的预期形成的。在

你能帮我明白我做错了什么吗?在

编辑: 我有部分答案。 rcrp_outrcwp_out的Sigmoid激活函数返回一个介于0和1之间的浮点数,因此它永远不会是自然数。在这种情况下,我需要更改激活函数和丢失函数,或者对标签的数据进行二进制处理。在


Tags: 数据函数name模型layer编辑inputsize
1条回答
网友
1楼 · 发布于 2024-09-27 23:18:40

我用这些函数对标签数据进行了二进制处理。在

def binarise_number(number, max_number=None):
    if max_number is None:
        return [int(x) for x in format(number, "0b")]
    n_number = format(number, "0>%db" % len(binarise_number(max_number, None)))
    return [int(x) for x in n_number]

def revert_binarise_number(n_number):
    str_number = '0b' + ''.join(str(int(x)) for x in n_number)
    number = int(str_number, base=2)
    return number

我的数据如下:

^{pr2}$

它现在如预期的那样工作。在

相关问题 更多 >

    热门问题