В чем разница между Sparse_categorical_crossentropy и категорийной_кросентропией? - PullRequest
0 голосов
/ 25 октября 2019

и какую функцию потерь следует использовать для задачи линейной регрессии, так как мы знаем, что результатом линейной регрессии являются числа, которые не являются ни категориальными, ни двоичными. ?

Я также проверяю немного документации блогов и керасов, но они не упоминали об этом много. У меня все еще есть замешательство в моей голове. В поисках руководства от моих старших.

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Из исходного кода тензорного потока sparse_categorical_crossentropy определяется как categorical crossentropy with integer targets:

def sparse_categorical_crossentropy(target, output, from_logits=False, axis=-1):
  """Categorical crossentropy with integer targets.
  Arguments:
      target: An integer tensor.
      output: A tensor resulting from a softmax
          (unless `from_logits` is True, in which
          case `output` is expected to be the logits).
      from_logits: Boolean, whether `output` is the
          result of a softmax, or is a tensor of logits.
      axis: Int specifying the channels axis. `axis=-1` corresponds to data
          format `channels_last', and `axis=1` corresponds to data format
          `channels_first`.
  Returns:
      Output tensor.
  Raises:
      ValueError: if `axis` is neither -1 nor one of the axes of `output`.
  """

Из исходного кода тензорного потока категориальная_кросцентропия определяется как Categorical crossentropy between an output tensor and a target tensor.

def categorical_crossentropy(target, output, from_logits=False, axis=-1):
  """Categorical crossentropy between an output tensor and a target tensor.
  Arguments:
      target: A tensor of the same shape as `output`.
      output: A tensor resulting from a softmax
          (unless `from_logits` is True, in which
          case `output` is expected to be the logits).
      from_logits: Boolean, whether `output` is the
          result of a softmax, or is a tensor of logits.
      axis: Int specifying the channels axis. `axis=-1` corresponds to data
          format `channels_last', and `axis=1` corresponds to data format
          `channels_first`.
  Returns:
      Output tensor.
  Raises:
      ValueError: if `axis` is neither -1 nor one of the axes of `output`.
  """

Смысл целочисленных целей состоит в том, что метки целей должны быть в форме целочисленного списка, который показывает индекс класса, например:

  • Для sparse_categorical_crossentropy, Для целей класса 1 и класса 2 в задаче классификации с 5 классами список должен быть [1,2]. По сути, цели должны быть в целочисленной форме для вызова sparse_categorical_crossentropy. Это называется разреженным, так как целевое представление требует гораздо меньше места, чем горячее кодирование. Например: Пакет с b целевыми объектами и k классами должен (b * k) иметь пространство, которое должно быть представлено в одноразовом режиме, тогда как пакет с b целевыми и k классами должен (b) пространство, которое должно быть представлено в целочисленной форме.

  • Для категории_кросентропии, Для целей класса 1 и класса 2 в задаче классификации 5-класса список должен быть [[0,1,0,0,0], [0,0,1,0,0]], в основном, цели должны быть в одной горячей форме, чтобы вызывать categoryorical_crossentropy.

Представление целей - единственное отличие,результаты должны быть одинаковыми, так как они оба вычисляют категориальную кроссентропию.

0 голосов
/ 26 октября 2019

Просто:

  • categoryorical_crossentropy использует массив из одной строки для вычисления вероятности,
  • sparse ... использует индекс категории

Тампять категорий.

  • cce: one-hot - прогнозирование модели [0, 1, 0, 0, 0]: [.2, .5, .1, .1, .1] (вероятно, верно)
  • разреженный: индекс равен [1], прогноз модели: [.5]

3 категории

  • cce: один горячий - это [0, 0, 1] прогнозирование модели: [.5, .1, .4] (возможно, неточное)
  • разреженный: индекс равен [2] прогнозирование модели: [.1]

Большинство категориальных моделей дают горячую и категоричную энтропию, потому что вы экономите пространство, но теряете МНОГО информации при использовании разреженных. Я всегда использую один горячий и изучаю вывод cce для надежности модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...