小编Kon*_*sea的帖子

如何在TensorFlow中定义加权损失函数?

我有一个train_data和train_labels的训练数据集,它们是张量流图中的train_data_node和train_labels_node。如您所知,我可以使用张量流的损失函数,如下所示:

logits = model(train_data_node)
loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(
    logits,train_labels_node))
Run Code Online (Sandbox Code Playgroud)

然而,这个损失函数平等地处理所有训练数据。但在我们的情况下,我们希望有区别地处理数据。例如,我们有一个与训练数据对应的 csv 文件,以指示训练数据是原始数据还是增强数据。然后我们要定义一个自定义损失函数,使原始数据的损失发挥更重要的作用,而增强数据的损失发挥不太重要的作用,例如:

loss_no_aug = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(noAugLogits, noAugLabels))
loss_aug = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(augLogits, augLabels))
loss = loss_no_aug * PENALTY_COEFFICIENT + loss_aug
Run Code Online (Sandbox Code Playgroud)

我已经定义了一个损失函数,如下所示,但它不起作用:

def calLoss(logits, labels, augs):
  noAugLogits = []
  noAugLabels = []
  augLogits = []
  augLabels = []
  tf.get_collection()
  for i in range(augs.shape[0]):
    if augs[i] == 1:
      noAugLogits.append(logits[i])
      noAugLabels.append(labels[i])
    else:
      augLogits.append(logits[i])
      augLabels.append(labels[i])
  noAugLogits = tf.convert_to_tensor(noAugLogits)
  noAugLabels = tf.convert_to_tensor(noAugLabels)
  augLogits = tf.convert_to_tensor(augLogits)
  augLabels = tf.convert_to_tensor(augLabels)
  return tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(
      noAugLogits, noAugLabels)) * PENALTY_COEFFICIENT + \
      tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(augLogits, augLabels))
Run Code Online (Sandbox Code Playgroud)

我认为我们应该使用张量运算来编写损失函数,但是,我对它们并不熟悉。那么有人可以给我一些关于如何定义损失函数的建议吗? …

python tensorflow

7
推荐指数
1
解决办法
3629
查看次数

当我在Visual Studio Code中调试python代码时,为什么会有这么多不正确的下划线

我已经在VSCode中编写了我的python代码,并在Ubuntu上使用名为'python'的python扩展了很多天.这非常好.

但是,今天我遇到了一些问题,如图所示:

我已经编写了正确的代码,可以正常运行(用于调试和通过终端运行).但是有许多绿色下划线和一些红色下划线提供了许多提示:

绿色下划线:

  • C0326:括号前没有空格(pylint)

  • W0621:从外部范围重新定义名称"img"(第60行)(pylint)

  • C0103:变量名称"c"无效(pylint)

  • C0326:逗号后需要一个空格(pylint)

  • C0303:尾随空格(pylint)

  • 等等

红色下划线:

E0602:未定义变量'Runtime'(pylint)

未指定的运行时错误.

这似乎发生了,因为我偶然按下了一个快捷键,但我不知道它是哪个键.

我怎样才能摆脱这些下划线?

python ubuntu visual-studio-code

3
推荐指数
1
解决办法
3489
查看次数

标签 统计

python ×2

tensorflow ×1

ubuntu ×1

visual-studio-code ×1