将tf.layers转换为tf.keras.layers之后的成本函数

时间:2019-03-11 14:56:12

标签: tensorflow keras

我有一个CNN,其输出尺寸为[None,10]

这是一个多标签问题,其中输出表示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)

1 个答案:

答案 0 :(得分:0)

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

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

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