《深度学习之tensorflow。。。》例7-1交叉熵的计算

本文对比了在TensorFlow中手动构建交叉熵损失函数与使用内置函数sigmoid_cross_entropy_with_logits的效率。通过实例验证两者结果的一致性,并推荐使用内置函数简化代码,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日看《深度学习之tensorflow。。。》例7-1,作者用到了交叉熵计算损失,用S函数作为激活函数:原代码如下:

output =tf.nn.sigmoid( tf.matmul(input_features, W) + b)
cross_entropy = -(input_lables * tf.log(output) + (1 - input_lables) * tf.log(1 - output))
loss = tf.reduce_mean(cross_entropy)

实际上,tensoflow提供了四种交叉熵函数可以直接调用,而不必再构造交叉熵公式。结合S函数的交叉熵函数为:
sigmoid_cross_entropy_with_logits(期待值,计算值)
看下面的小例子,两种方式的交叉熵结果一致:

import tensorflow as tf
import numpy as np
t=np.random.multivariate_normal([2,2],[[1,0],[0,1]],5)
input_lables=np.random.multivariate_normal([2,2],[[1,0],[0,1]],5)

output=tf.nn.sigmoid(t)
loss=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=input_lables,logits=t))
cross=-(input_lables*tf.log(output)+(1-input_lables)*tf.log(1-output))
loss2=tf.reduce_mean(cross)
with tf.Session() as sess:
    print(loss.eval())
    print("----------------------")
    print(loss2.eval())

所以原书7-1此部分代码可以改为:

loss=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=input_lables,logits=tf.matmul(input_features,W)+b))

当然,原书代码更清晰的表明了S型交叉熵的运行原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值