MetricRecord

class MetricRecord(metric_dict: dict[str, int | float | list[int] | list[float]] | None = None, keep_input: bool = True)[source]

Bases : TypedDict[str, int | float | list[int] | list[float]], InflatableObject

Enregistrement métrique.

Un MetricRecord est un dictionnaire Python conçu pour garantir que chaque paire de clé-valeur respecte les types de données spécifiés. Un MetricRecord est l’un des types de documents que supporte une flwr.app.RecordDict et peut donc être utilisé pour construire des objets app.Message.

Paramètres:
  • metric_dict (Optional[Dict[str, MetricRecordValues]]) – Un dictionnaire stockant les types de base (c’est-à-dire int, float tels que définis dans MetricScalar) et liste de tels types (voir MetricScalarList).

  • keep_input (bool (default: True)) – Une valeur booléenne indiquant si les métriques doivent être supprimées du dictionnaire d’entrée immédiatement après y avoir ajouté des valeurs. Lorsque cette valeur est définie sur True, les données sont dupliquées en mémoire. Si la mémoire est un souci, définissez-la sur False.

Exemples

L’utilisation d’un MetricRecord est prévue pour communiquer les résultats obtenus lorsqu’une nœud effectue une action. Quelques exemples typiques incluent : communiquer l’exactitude de l’entraînement après qu’un modèle a été entraîné localement par un ClientApp, signaler la perte de validation obtenue à un ClientApp, ou, plus généralement, le résultat de l’exécution d’une requête par le ClientApp. Ce qui est commun à ces exemples est que les résultats peuvent être typiquement représentés par un scalaire unique (int, float) ou liste de scalaires.

Voyons quelques exemples de construction d’un MetricRecord à partir de zéro :

from flwr.app import MetricRecord

# A `MetricRecord` is a specialized Python dictionary
record = MetricRecord({"accuracy": 0.94})
# You can add more content to an existing record
record["loss"] = 0.01
# It also supports lists
record["loss-historic"] = [0.9, 0.5, 0.01]

Puisque les types sont contraints, les types des objets insérés sont vérifiés. Pour un MetricRecord, les types de valeurs autorisées sont ceux définis dans flwr.app.MetricRecordValues. De même, seuls les clés str sont autorisées :

from flwr.app import MetricRecord

record = MetricRecord() # an empty record
# Add unsupported value
record["something-unsupported"] = {'a': 123} # Will throw a `TypeError`

Si vous avez besoin d’un type de record plus versatile, essayez ConfigRecord ou ArrayRecord.

Methods

clear()

copy()

Retourner une copie superficielle du dictionnaire.

count_bytes()

Retourner le nombre de Bytes stockés dans cet objet.

deflate()

Défléter l'objet.

get(k[,d])

inflate(object_content[, children])

Infléitez un RecordMetric à partir de bytes.

items()

keys()

pop(k[,d])

Si la clé n'est pas trouvée, d est retourné si donné, sinon KeyError est levé.

popitem()

Comme une 2-tuple ; mais levez KeyError si D est vide.

setdefault(k[,d])

update([E, ]**F)

Si E est présent et a une méthode .keys(), faites : pour k dans E: D[k] = E[k] Si E est présent mais manque de la méthode .keys(), faites : pour (k, v) dans E: D[k] = v Dans les deux cas, ceci est suivi de : pour k, v dans F.items(): D[k] = v

values()

Attributes

children

Récupérez tous les objets enfants sous forme de dictionnaire ou None si il n'y a pas d'enfants.

is_dirty

Vérifier si l'objet est sale après la dernière déflation.

object_id

Récupérez l'ID d'objet.

property children: dict[str, InflatableObject] | None

Récupérez tous les objets enfants sous forme de dictionnaire ou None si il n’y a pas d’enfants.

clear() None.  Remove all items from D.
copy() Self

Retourner une copie superficielle du dictionnaire.

count_bytes() int[source]

Retourner le nombre de Bytes stockés dans cet objet.

deflate() bytes[source]

Défléter l’objet.

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
classmethod inflate(object_content: bytes, children: dict[str, InflatableObject] | None = None) MetricRecord[source]

Infléitez un RecordMetric à partir de bytes.

Paramètres:
  • object_content (bytes) – Le contenu déflété de l’objet MetricRecord.

  • children (Optional[dict[str, InflatableObject]] (default: None)) – Doit être None. MetricRecord ne supporte pas d’objets enfants. La fourniture de tout enfant entraînera une erreur ValueError.

Renvoie:

L’objet MetricRecord infléi.

Type renvoyé:

MetricRecord

property is_dirty: bool

Vérifier si l’objet est sale après la dernière déflation.

Un objet est considéré comme sale si son contenu a changé depuis le dernier calcul de son ID d’objet.

items() a set-like object providing a view on D's items.
keys() a set-like object providing a view on D's keys.
property object_id: str

Récupérez l’ID d’objet.

pop(k[, d]) v, remove specified key and return the corresponding value.

Si la clé n’est pas trouvée, d est retourné si donné, sinon KeyError est levé.

popitem() (k, v), remove and return some (key, value) pair

Comme une 2-tuple ; mais levez KeyError si D est vide.

setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) None.  Update D from mapping/iterable E and F.

Si E est présent et a une méthode .keys(), faites : pour k dans E: D[k] = E[k] Si E est présent mais manque de la méthode .keys(), faites : pour (k, v) dans E: D[k] = v Dans les deux cas, ceci est suivi de : pour k, v dans F.items(): D[k] = v

values() an object providing a view on D's values.