我想使用Tensorflow tf.losses.compute_weighted_loss,但找不到任何好的例子。我有一个多类分类问题,并使用tf.nn.sigmoid_cross_entropy_with_logits作为损失。现在我想独立地衡量每个标签的误差。假设我有n个标签,这意味着我需要一个n大小的权重向量。不幸的是,tf希望我传递一个(b,n)形的错误权重矩阵,其中b是批量大小。所以基本上我需要把权重向量重复b次。给定一个固定的批处理大小,这是可以的,但如果我的批处理大小是可变的(例如,数据集末尾的较小批处理),我必须适应。有什么办法可以解决这个问题吗?还是我漏掉了什么?
发布于 2017-07-29 00:45:44
我只需将向量从(n,)重塑为(1,n),以使广播成为可能:
error_weights = error_weights.reshape(1, error_weights.shape[0])发布于 2019-03-26 02:37:09
在现有答案的基础上,如果error_weights是Tensor,则使用tf.expand_dims。
error_weights = tf.expand_dims(error_weights, 0) # changes shape [n] to [1, n]https://stackoverflow.com/questions/45378448
复制相似问题