Funkcijos „Tf.nn.sigmoid_cross_entropy_with_logits ()“ analizavimas

Tf Nn Sigmoid_cross_entropy_with_logits Function Parsing



Neseniai susidūriau su funkcija tf.nn.sigmoid_cross_entropy_with_logits (), kurią išmokau anksčiau, ir tai įrašau.

Skaičiuojant kryžminę entropiją naudojama funkcija tf.nn.sigmoid_cross_entropy_with_logits ().

tf.nn.sigmoid_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, name=None )

parametras:



  • _sentinel: Iš esmės nenaudojami parametrai, nereikia pildyti
  • Etiketės: turi tą patį tipą (plūduriuojantį) ir formos tensorių kaip logitai
  • Logitai: duomenų tipas (tipas) yra „float32“ arba „float64“
  • Pavadinimas: operacijos pavadinimas gali būti užpildytas arba ne

grąžinimo vertė:



Vienmatis ilgio tensorius partijos dydis



Pastaba: jei kiekviena etikečių eilutė yra viena karšta, tai yra, tik viena vieta yra 1, o likusi dalis yra 0, galite naudoti tf.sparse_softmax_cross_entropy_with_logits ()

„Tensorflow“ kryžminės entropijos skaičiavimo funkcijos įvesties logitai yra ne „softmax“ arba „sigmoid“ išvestis, bet „softmax“ arba „sigmoid“ funkcijos įvestis, nes ji funkcijos viduje vykdo sigmoidines arba „softmax“ operacijas.

Parametrų etiketės, žurnalai turi būti tos pačios formos [partijos_dydis, skaičių_klasės] ir tų pačių tipų („float16“, „float32“, „float64“).



1 pavyzdys:

import tensorflow as tf labels = [[0.2,0.3,0.5], [0.1,0.6,0.3]] logits = [[2,0.5,1], [0.1,1,3]] logits_scaled = tf.nn.softmax(logits) result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits) result2 = -tf.reduce_sum(labels*tf.log(logits_scaled),1) result3 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits_scaled) with tf.Session() as sess: print(sess.run(result1)) print(sess.run(result2)) print(sess.run(result3)) > [1.4143689 1.6642545] [1.4143689 1.6642545] [1.1718578 1.1757141]

Ankstesniame pavyzdyje kiekviena etikečių eilutė yra tikimybių pasiskirstymas, o žurnalai nėra keičiami (kiekviena eilutė nesumuoja 1). Apibrėžimo metodą naudojame kryžminio entropijos rezultato2 apskaičiavimui ir taikome tf.nn.softmax_cross_entropy_with_logits (), kad gautume tą patį. Todėl mastelio logits_scaled praranda tf.nn.softmax_cross_entropy_with_logits (), bet gauna neteisingą rezultatą, todėl būkite nepamirškite pažymėti, kad šios operacijos įvesties žurnalai nesuskaičiuojami.

Nuorodos straipsnis:

Tf.nn.softmax_cross_entropy_with_logits () užrašai ir kryžminė entropija