0

我有一个输出维度为 [None, 10] 的 CNN

这是一个多标签问题,其中输出表示 x 可能属于的可能类别。(例如,图像可以分类为cat dark等等)

以下是我现在所拥有的,如何将代码更改为 keras 版本?我找不到等效的sigmoid_cross_entropy_with_logits

 model = tf.layers.dense(L3, category_num, activation=None)
 cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(logits=model, labels=Y)

 cost = tf.reduce_mean(tf.reduce_sum(cross_entropy, axis=1))
 optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)
4

2 回答 2

0

Keras 中的直接替代方法是在输出层中使用 sigmoid 激活函数,并使用 binary_crossentropy 作为成本函数。

net.add(Dense(..., activation='sigmoid'))
net.compile(optimizer, loss='binary_crossentropy')

看看https://github.com/keras-team/keras/issues/741

于 2019-03-11T16:06:42.353 回答
0

在 Keras 中:

#you model here -- last layer:

model.add(Dense(10))
model.add(Activation('sigmoid'))
model.compile(loss='categorical_crossentropy',
              optimizer="adam",metrics=['accuracy'])
于 2019-03-11T16:45:57.433 回答