gpt4 book ai didi

python - 多个 softmax 分类(Keras)

转载 作者:行者123 更新时间:2023-12-03 16:23:52 25 4
gpt4 key购买 nike

我正在尝试构建一个输出 2 个标签的 CNN,其中每个标签有 12 种可能性;输入是一个图像。

换句话说,我想要的输出是 A(12 个选项中的一个)和 B(12 个中的一个 不同的 选项)。

单独使用每个标签,首选当然是 softmax,但我找不到是否可以做这样的“多个 softmax”标签。

显然,我可以使用 sigmoid 输出输出 24 个神经元,然后手动归一化,但是网络不会本质上耦合每组中的 12 个选项。

我正在编写我想要的伪伪代码,如果它存在的话:

model = Sequential()
model.add(Convolution2D(64, kernel_size=3,activation='relu', input_shape=image_shape))
model.add(Flatten())
model.add(Dense(256,activation='relu'))
# pseudo-pseudo-code
model.add(Dense((12,12),activation=('softmax','softmax'))) # <- here is where I would have liked 2 softmax outputs with 12 neurons in each

欢迎任何解决方案(我正在使用 Keras,但会很高兴使用任何其他包的解决方案,甚至自己编写代码)。

编辑:我还可以生成代表所有组合的 144 个输出,但我不确定这是否是一个好的解决方案 - 对此的任何评论也非常受欢迎

最佳答案

我会使用带有 2 个输出的功能 API。指南在 https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models

一些关于:

input = Input(input_shape=image_shape)
cnv = Convolution2d(...)(input)
hidden = Dense(256, ...)(Flatten()(cnv))
output1 = Dense(12, activation='softmax')(hidden)
output2 = Dense(12, activation='softmax')(hidden)
model = keras.models.Model(inputs=input, outputs=[output1, output2])
model.compile(optimizer='sgd', loss=['binary_crossentropy', 'binary_crossentropy'],
loss_weights=[1., 1.])

关于python - 多个 softmax 分类(Keras),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54893341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com