Python 关于'的机制/行为;softmax_cross_entropy_with_logits';张量流函数
:) 嗨,伙计们 现在,我正在使用tensorflow进行多热分类 如果使用softmax_cross_entropy_with_logits,则损失函数会增加(例如损失:50->损失:190000->损失:2138712811->…) 因此,我想用逻辑来阐明softmax_交叉熵_的机制Python 关于'的机制/行为;softmax_cross_entropy_with_logits';张量流函数,python,tensorflow,softmax,Python,Tensorflow,Softmax,:) 嗨,伙计们 现在,我正在使用tensorflow进行多热分类 如果使用softmax_cross_entropy_with_logits,则损失函数会增加(例如损失:50->损失:190000->损失:2138712811->…) 因此,我想用逻辑来阐明softmax_交叉熵_的机制 def imitation_SCEwL(logits, labels): _y = tf.nn.softmax(logits) _y = tf.clip_by_value(_y, 1e-10, 1.0
def imitation_SCEwL(logits, labels):
_y = tf.nn.softmax(logits)
_y = tf.clip_by_value(_y, 1e-10, 1.0)
cross_entropy = -( labels * tf.log(_y) )
cross_entropy = tf.reduce_sum(cross_entropy, 1, keep_dims=True)
cross_entropy = tf.reduce_mean( cross_entropy )
return cross_entropy
我认为下面的python代码可以用逻辑模拟softmax\u cross\u entropy\u
def imitation_SCEwL(logits, labels):
_y = tf.nn.softmax(logits)
_y = tf.clip_by_value(_y, 1e-10, 1.0)
cross_entropy = -( labels * tf.log(_y) )
cross_entropy = tf.reduce_sum(cross_entropy, 1, keep_dims=True)
cross_entropy = tf.reduce_mean( cross_entropy )
return cross_entropy
但是,正版(在tensorflow中实现)和上述代码之间的行为是不同的
使用上述代码,损失函数收敛
为什么??
我只更改下面的代码
def loss_softmax_cross_entropy_with_logits(logits, labels):
_y = tf.nn.softmax_cross_entropy_with_logits(logits, labels)
cross_entropy = tf.reduce_mean(_y)
return cross_entropy
逻辑的基本思想是正确的,但在
simulation\u SCEwL
函数中调用softmax时,应指定“dim”
请参阅以下代码以计算损失:
1.numpy实现
def xent(features, labels, dim=-1):
if dim is -1:
dim = len(features.shape) - 1
one_only_on_dim = list(features.shape)
one_only_on_dim[dim] = 1
e = np.exp(features - np.reshape(
np.amax(
features, axis=dim), one_only_on_dim))
probs = e / np.reshape(np.sum(e, axis=dim), one_only_on_dim)
l = -np.sum(labels * np.log(probs + 1.0e-20), axis=dim)
return l
def imitation_SCEwL(logits, labels, dim=-1):
_y = tf.nn.softmax(logits, dim=dim)
cross_entropy = labels * (-tf.log(_y))
cross_entropy = tf.reduce_sum(cross_entropy, 1, keep_dims=True)
retval = sess.run(cross_entropy)
return retval