Реализация Softmax Cross Entropy в Tensorflow Github Исходный код - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь реализовать кросс-энтропийную потерю Softmax в python. Итак, я смотрел на реализацию кросс-энтропийной потери Softmax в репозитории GitHub Tensorflow. Я пытаюсь понять это, но я сталкиваюсь с oop из трех функций, и я не понимаю, какая строка кода в функции вычисляет потери?

Функция softmax_cross_entropy_with_logits_v2(labels, logits, axis=-1, name=None) возвращает функцию softmax_cross_entropy_with_logits_v2_helper(labels=labels, logits=logits, axis=axis, name=name), который в свою очередь возвращает softmax_cross_entropy_with_logits(precise_logits, labels, name=name).

Теперь функция softmax_cross_entropy_with_logits(precise_logits, labels, name=name) возвращает функцию softmax_cross_entropy_with_logits_v2(labels, logits, axis=-1, name=None).

Это заставляет меня упасть в oop функций, не зная явно где код для вычисления cost для функции Softmax. Кто-нибудь может указать, где реализован код кросс-энтропии Softmax в репозитории Tensorflow GitHub?

Ссылка на репозиторий GitHub, на которую я ссылаюсь, здесь . Он содержит определения трех вышеупомянутых функций.

Если в случае, если код для cost требует много функций, которые трудно понять, не могли бы вы также объяснить строки кода? Благодаря.

1 Ответ

2 голосов
/ 02 мая 2020

Когда вы следите за стеком вызовов для этой функции, вы в конечном итоге найдете this :

cost, unused_backprop = gen_nn_ops.softmax_cross_entropy_with_logits(
      precise_logits, labels, name=name)

Всякий раз, когда вы видите ссылку на модуль gen_, это означает, что он автоматически сгенерированная python оболочка над кодом C ++ - поэтому вы не можете найти ее, просто просматривая функцию и следуя стеку вызовов.

Исходный код C ++ можно найти здесь .

Как создается gen_nn_ops, хорошо описано в этом ответе .

...